你好我不是java程序员,
我需要知道这个功能的作用:
rpcToken = Math.round(1E8 * Double.parseDouble("0." + (int) (Math.random() * Integer.MAX_VALUE)));
这只是生成一个随机的8个数字字符串?我需要在PHP中完全使用它。
谢谢
答案 0 :(得分:0)
Math.random()
为您提供小于1但至少为0.的伪随机数。
这乘以Integer.MAX_VALUE
,即2147483647.结果是0到2147483646之间的数字。
(int)
将此数字转换为整数。
"0." +
将此转换为String
,并添加“0”到它的开头。
Double.parseDouble
将此String
转换回double
。所以现在我们再次有一个介于0和1之间的数字。但是由于我们创建String的方式,任何大于0但小于0.1的数字都是不可能的。 “0.9”和“0.900”都将转换为0.9。
1E8 *
将此乘以1E8,即100000000。
最后,Math.round
将此舍入到最接近的整数。
所以,总的来说,我们在0到99999999之间有一个假定的随机数,但最终结果非常偏斜。使用此代码无法生成许多数字(1到9999999之间的数字似乎不可能,但仍然可以使用0)并且此代码将比其他数字更频繁地生成某些数字(接近一半生成的数字将以1开头,等等比平均值可能以0)结束,我发现所有这些都是故意的(尽管如果不知道代码的目的就无法肯定地说出来。)
如果您只需要一个随机的8位数字,那么有更简单,更快捷,更好的方法。为什么不将第一步中得到的随机数乘以100000000并将其四舍五入呢?