我有这个代码
我正试图向方法"有趣"发送一个随机替身
BL在这里是二重1
double inf=Double.POSITIVE_INFINITY;
double rand=inf*R.nextDouble();
double myrand=fun(rand)*BL;
mylist.get(i).set_speed(myrand);
这里是"有趣"的方法
double fun(double v)
{
return ((pow(A,K)*exp((-1)*A*v)*pow(v,K-1))/(fact(K-1)));
}
但速度参数的输出始终为NaN
据我所知,无穷大不是二重可及的。试试这个
double rand = R.nextDouble(Double.MAX_VALUE- 1);
这将创建一个介于0和双最大值之间的随机双
尝试将此行inf*R.nextDouble();
更改为Double.MAX_VALUE * R.nextDouble();
如果您还需要不时获得Double.POSITIVE_INFINITY
,那么您必须实现一个额外的If块,并在某些情况下随机返回Double.POSITIVE_INFINITY
。
获取带正号的双值,大于或等于0.0且小于double.MAX_value:
double r = Math.random()*Double.MAX_VALUE
然后简单地将结果传递给您的函数。
不能得到0到无穷大之间的数字。
因为如果可以的话,你会得到一个无穷大的数。
1.但你可以得到一个最大值为的随机数
int random(int max)
{
return (int) (Math.random() * max);
}
2.使用最小数量:
int random(int min, int max)
{
int range = (max - min) + 1;
return (int) (Math.random() * range) + min;
}
3.如果你不想要任何小数,请键入以下内容:
int random(int min, int max)
{
int range = (max - min) + 1;
return (int) Math.round((Math.random() * range) + min);
}
否则,如果你想向下或向上取整:
//round down
(int) Math.floor((Math.random() * range) + min);
//round up
(int) Math.ceil((Math.random() * range) + min);
短信号码:
//between 500 1000 (function 2 or 3)
JOptionPane.showMessageDialog(null, random(500, 1000));
//or just maximal: 1000 (function 1)
JOptionPane.showMessageDialog(null, random(1000));
希望有帮助:)