我在尝试用JavaScript实现UUID生成器时遇到了这种奇怪的现象.
基本上,在JavaScript中,如果我Math.random()使用Node上的内置生成大量随机数4.2.2:
var records = {};
var l;
for (var i=0; i < 1e6; i += 1) {
l = String(Math.random()).length;
if (records[l]) {
records[l] += 1;
} else {
records[l] = 1;
}
}
console.log(records);
Run Code Online (Sandbox Code Playgroud)
数字位数有一个奇怪的模式:
{ '12': 1,
'13': 11,
'14': 65,
'15': 663,
'16': 6619,
'17': 66378,
'18': 611441,
'19': 281175,
'20': 30379,
'21': 2939,
'22': 282,
'23': 44,
'24': 3 }
Run Code Online (Sandbox Code Playgroud)
我认为这是V8的随机数生成器的怪癖,但类似的模式出现在Python 3.4.3:
12 : 2
13 : 5
14 …Run Code Online (Sandbox Code Playgroud)