【发布时间】:2016-02-14 10:06:18
【问题描述】:
我有这个代码
我正在尝试向“fun”方法发送随机双精度
这里的 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
【问题讨论】:
-
无限在 IEEE 754 中定义;但这并不意味着它是无穷大的值。见Wikipedia on IEEE 754 double precision
-
不会将无穷大乘以随机生成的双精度值总是无穷大吗?这不是破坏随机目的吗?
-
一个数的无穷乘以总是无穷
-
生成一个介于 0 和无穷大之间的随机数将花费无限的计算时间和无限的存储空间。如果我是你,我会把目光放低一点。