【发布时间】:2014-08-04 15:21:39
【问题描述】:
我查看了其他一些问题,但它们都脱节了,confusing 的答案。
我想要一个随机的 6 位数字,这个脚本在大多数情况下都可以工作 - 但是它也会在大约 20% 的情况下产生 7 位数字。
Math.floor((Math.random() * 999999) + 100000)
我的问题:
- 为什么?
- 避免这种情况的正确方法是什么?
请不要建议使用 substring 或类似的东西,因为它有点 hack
【问题讨论】:
-
它应该只做 1/10 的时间
-
编写一个通用的
randInt方法并使用它而不是内联算术可能会有所帮助。你可以找到一个示例实现here。 -
@Alnitak 与所有好事一样,我目前认为我的 20% 有点慷慨,更像是我上次运行的 40%:/
-
@tim.baker 它真的应该只有 10%(假设正确的随机分布)。您的范围的随机部分是 0..999,998 而不是 0..899,999,因此只有当您达到超过 900,000 的位(应该是样本的 10%)时,您才会最终得到七位数。
标签: javascript math random