首页  >  文章  >  web前端  >  如何在 JavaScript 中创建可播种的随机数生成器?

如何在 JavaScript 中创建可播种的随机数生成器?

Susan Sarandon
Susan Sarandon原创
2024-11-04 17:35:02515浏览

How to Create a Seedable Random Number Generator in JavaScript?

可种子 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn