【发布时间】:2015-01-24 23:54:53
【问题描述】:
对于Math.random的不同JavaScript实现:
抛开内存和长度问题不谈,以下是否最终会有一个永远重复的数字序列(例如,它仅依赖于内部种子,当该种子回绕到其起点时,数字会重复)?
sequence = Math.random();
while(true){
sequence += ', ' + Math.random();
}
每个客户端是否具有相同的重复序列(例如,客户端不会将特定于客户端的数据合并到随机数生成过程中)?
我问是因为如果可能的数字序列是一个有限的子集,像generating UUIDs with Math.random 这样的东西会有更大的冲突机会。
【问题讨论】:
-
我不认为每个客户端都可以有相同的重复序列,假设序列意味着一系列数字。您最终可能会得到一个重复的数字,但序列重复似乎不太可能
-
嗯,有可能两个客户端拥有完全相同的种子(它们的时间戳完全相同),但可能性很小......当然。我想知道 Spidermonkey 和 V8 的种子生成器是什么...
-
是的,保证重复,并在给定相同种子的情况下重复相同的序列。不要使用 Math.random() 来生成 UUID——你需要一个加密的 RNG。
标签: javascript random