avo*_*avo 8 javascript random node.js
我在nodejs中进行了这个简单的测试,我让它在一夜之间运行,无法重复Math.random().我意识到价值(或甚至整个序列)迟早会重复,但对它何时会发生有什么合理的期望?
let v = {};
for (let i = 0;; i++) {
let r = Math.random();
if (r in v) break;
v[r] = r;
}
console.log(i);
Run Code Online (Sandbox Code Playgroud)
它是浏览器特定的:
https://www.ecma-international.org/ecma-262/6.0/#sec-math.random
20.2.2.27 Math.random()使用依赖于实现的算法或策略,返回具有正号,大于或等于0但小于1的Number值,随机或伪随机选择,在该范围内具有近似均匀的分布.此函数不带参数.
为不同的代码Realms创建的每个Math.random函数必须从连续调用生成不同的值序列.
这里的要求只是伪随机且均匀分布.
这是来自V8(Chrome和NodeJs的Javascript引擎)的博客文章.
https://v8.dev/blog/math-random
他们说他们正在使用xorshift128 +,其最大周期为2^128 -1
.
归档时间: |
|
查看次数: |
162 次 |
最近记录: |