可种子 JavaScript 随机数生成器
JavaScript Math.random() 函数根据当前时间生成 0 到 1 之间的随机值,类似于Java的随机数生成器。但是,它缺乏指定种子值来控制生成数字的顺序的能力。
创建具有种子支持的自定义随机数生成器
创建随机数具有种子支持的数字生成器,请考虑以下选项:
实现线性同余生成器 (LCG)
LCG 实现起来相对简单,并提供良好的随机性质量。您可以利用以下常量:
m = 0x80000000; // 2**31 a = 1103515245; c = 12345;
这是 JavaScript 中的示例实现:
<code class="javascript">function RNG(seed) { this.m = 0x80000000; this.a = 1103515245; this.c = 12345; this.state = seed ? seed : Math.floor(Math.random() * (this.m - 1)); } RNG.prototype.nextInt = function() { this.state = (this.a * this.state + this.c) % this.m; return this.state; }</code>
您可以扩展此 RNG 类以提供其他方法,例如 nextFloat、nextRange 和基于选择的方法在 LCG 核心上。
利用库进行短种子 RNG
诸如 [js-random](https://www.npmjs.com/package/
示例实现
这是一个使用基于 LCG 的 RNG 的简单示例:
<code class="javascript">var rng = new RNG(20); for (var i = 0; i < 10; i++) { console.log(rng.nextRange(10, 50)); }</code>
以上是如何在 JavaScript 中创建可播种的随机数生成器?的详细内容。更多信息请关注PHP中文网其他相关文章!