如何在JavaScript中使用Math.random实现随机性?

Dav*_*vid 18 javascript random

如何在JavaScript中使用Math.random实现随机性?我已经做了一些随机选择大约50种不同选项的东西.我想知道使用Math.random来获得随机性是多么的舒服.

Bob*_*Bob 14

从规格:

随机():

使用依赖于实现的算法或策略,返回具有正号,大于或等于0但小于1的Number值,随机或伪随机选择,在该范围内具有近似均匀的分布.此函数不带参数.

所以答案是它取决于你使用的JavaScript引擎.

我不确定所有浏览器是否使用相同的策略或不幸的策略

这对你的目的应该没问题.只有你做了大量的数字才会开始看到一个模式

  • 它足以满足日常需求,这就是Javascript的`Math.random()`.没关系. (4认同)

Nic*_*anu 11

如果您没有集中汇集和使用结果,即使用OAuth,则使用Math.random()就可以了.

例如,我们的网站使用Math.random()生成随机"nonce"字符串,以便与OAuth一起使用.原始JavaScript库通过使用Math.random()从预定列表中选择一个字符来完成此操作:即

for (var i = 0; i < length; ++i) {
    var rnum = Math.floor(Math.random() * chars.length);
    result += chars.substring(rnum, rnum+1);
}
Run Code Online (Sandbox Code Playgroud)

问题是,用户获得了重复的nonce字符串(即使使用10个字符长度 - 理论上~10 ^ 18个组合),通常在几秒之内.我猜这是由于Math.random()从时间戳播种,正如其他提到的海报之一.

  • +1用于描述基于时间戳的种子设定如何在并发环境中生成重复数字. (3认同)