是否有任何关于应该生成多少随机位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个随机位。
答案 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 的历史记录。