【发布时间】:2010-08-06 22:05:04
【问题描述】:
我只是想在 JS 中实现一个简单的 RNG。
发生的事情是 javascript 将 119106029 * 1103515245 评估为 131435318772912110 而不是 131435318772912105。我们知道这是错误的,因为两个奇数相乘不会得到偶数。
有人知道怎么回事吗?我只想要一个可靠的可重复 RNG,并且由于这些不正确的值,我无法获得与我的 C 实现相同的东西相匹配的结果。
【问题讨论】:
-
如果我是你,我会问:为什么你首先需要乘以这么大的数字?这可能是一种在不使用此方法的情况下做你想做的事情的方法。除非它是一些科学问题领域,否则您可能会遇到设计错误。
-
只做最简单的随机数生成器。乘以大数,加上一个常数,mod 乘以 2**32。我只对最后几位感兴趣!但他们错了。为什么?
-
当
Math.random() * 100000(00.....)不够用的时候!? -
见杰森的回答。我需要一些确定性和可重现的东西。我想要一个特定的种子值来给我一个可以复制的特定随机序列。
标签: javascript integer overflow