JS での非繰り返し乱数の生成は、さまざまな手法を使用して実現できます。もともと、このアプローチは、新しく生成された数値が既に作成されているかどうかを、配列に追加して比較することで確認することでした。ただし、過剰な再帰呼び出しにより、「最大呼び出しスタック サイズを超えました」エラーが発生する可能性があります。
効率的な解決策は、ランダム化された数値リストを 1 回生成し、それを順番に処理することです。このアプローチにより、再帰呼び出しの必要性がなくなり、繰り返しがないことが保証されます。
Fisher-Yates Shuffle を使用した例を次に示します:
<code class="js">function shuffle(array) { var i = array.length, j = 0, temp; while (i--) { j = Math.floor(Math.random() * (i+1)); temp = array[i]; array[i] = array[j]; array[j] = temp; } return array; } var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]);</code>
あるいは、ジェネレーターをこの目的に使用することもできます:
<code class="js">function* shuffle(array) { var i = array.length; while (i--) { yield array.splice(Math.floor(Math.random() * (i+1)), 1)[0]; } } var ranNums = shuffle([1,2,3,4,5,6,7,8,9,10]); ranNums.next().value; // first random number from array ranNums.next().value; // second random number from array ...</code>
これらの手法は、JavaScript で非繰り返しの乱数を生成する効率的な方法を提供し、過剰な再帰呼び出しに関連する問題を排除します。
以上がJavaScript で非反復乱数を効果的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。