シード可能な 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 サイトの他の関連記事を参照してください。