Math.random生成随机位数的数字

12

对于Math.random应该产生多少随机位有没有任何要求? 我在Chrome和Firefox的实现上进行了一些测试,将结果转换为十六进制以检查位,Firefox 27.0.1的结果如下:

0x1.de619579d56f3p-1
0x1.ef1ada9306decp-2
0x1.df3b75e208ce6p-1

而 Chrome 版本 33.0.1750.154 m 给出

0x1.1190f39c00000p-2
0x1.b959e3b600000p-1
0x1.90f614b400000p-2

相比之下,它非常糟糕。它似乎是32位结果,而Firefox的值似乎使用了53个随机位。


我从未见过以那种方式表示数字。那只是十六进制表示的十进制数吗? - thefourtheye
@thefourtheye:请查看格式规范。我使用的是Python(没有看到本地的Javascript工具进行转换),但是相同的格式也用于C和Java中。在xp之间的部分是十六进制数,而p后面的部分是表示要乘以的二次幂的十进制数。 - user2357112
1
哦,谢谢啊。但是Math.random()的规范并没有提到这个问题。所以,我认为它实际上取决于具体的实现方式。 - thefourtheye
2个回答

4

http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.14

15.8.2.14 random ( )

返回一个正号的数字值,大于等于0但小于1,使用实现依赖的算法或策略随机选择或伪随机选择该范围内近似均匀分布的值。该函数不接受任何参数。

看起来这就是规范所述的全部内容了。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接