ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript でシード可能な乱数ジェネレーターを作成する方法

JavaScript でシード可能な乱数ジェネレーターを作成する方法

Susan Sarandon
リリース: 2024-11-04 17:35:02
オリジナル
588 人が閲覧しました

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、選択ベースなどの追加メソッドを提供できます。

ショートシード可能 RNG 用のライブラリの利用

[js-random](https://www.npmjs.com/package/) などのライブラリjs-random) は、さまざまなアルゴリズムのオプションを備えた短いシード可能な RNG を提供します。

実装例

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート