saber酱的抱枕

生于忧患,死于安乐

10/27
13:51
学习

Math.random() 生成随机字符串需要注意长度

如果在 JavaScript 中使用 Math.random().toString(16) 这种方法来生成随机字符串,字符串的长度并不固定。我测试了一些数据,发现最小可能是 9 位。

let i = 0;
let result = new Array(20).fill(0)
while (i < 100000000) {
  const a = Math.random().toString(16)
  result[a.length] = ++result[a.length]
  i++
}
console.log(result)

上面代码运行了一亿次,统计每次字符串的长度。结果如下:

// 长度: 次数
9: 6
10: 91
11: 1412
12: 22948
13: 365715
14: 5861132
15: 93748696

结果均在 9 - 15 位之间。

如果 Math.random().toString(number) 的参数不同,那么就需要重新测试。

所以如果希望这种方法生成的字符串的长度一致,那么就需要进行测试,并且裁剪字符串(长度不大于最小长度)。

Math.random() 生成随机字符串需要注意长度