Math.random随机位数

时间:2014-03-23 11:16:13

标签: javascript random cross-browser

是否有任何关于应该生成多少随机位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个随机位。

2 个答案:

答案 0 :(得分:2)

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

  

15.8.2.14 random()

     

使用依赖于实现的算法或策略,返回具有正号,大于或等于0但小于1的Number值,随机或伪随机选择,在该范围内具有近似均匀的分布。这个函数不带参数。

似乎是所有规范都说的。

答案 1 :(得分:0)

https://v8.dev/blog/math-random 说 Chrome 49 使用一个名为“xorshift128+”的随机数生成器,我认为 Firefox 也这样做。这会生成周期为 2^128-1 的 64 位结果(转换为浮点数,我认为这意味着 53 位精度)。

https://lwn.net/Articles/666407/ 有更多浏览器 RNG 的历史记录。