在java中生成一个0到无穷大之间的随机二重



我有这个代码

我正试图向方法"有趣"发送一个随机替身

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));

希望有帮助:)

最新更新