配列項目を反復せずに効率的にランダムに選択するにはどうすればよいですか?
反復せずに配列項目をランダムに効率的に選択する
最近の選択が繰り返されないように、配列から項目をランダムに選択する関数を考案しました。現在のソリューションは効果的に機能しますが、その効率性と過剰なループにつながる可能性について懸念があります。より効率的なアプローチを検討してみましょう。
1.再帰に関する考慮事項
はい、chooseName() 関数は、一意の名前が見つかるまで自分自身を呼び出すため、再帰的であると考えることができます。再帰は特定の問題に役立つ場合がありますが、スタックの使用量と過剰な深さの可能性に注意することが重要です。
2.効率的なソリューション
効率性の問題に対処するために、別の戦略を採用できます。再帰に頼って一意の名前が見つかるまでループする代わりに、元の配列のコピーを作成し、すべての項目が選択されるまでそのコピーから項目をランダムに選択できます。すべての項目が使い果たされたら、コピーを元の状態にリセットします。
このアプローチの JavaScript 実装は次のとおりです。
<code class="javascript">function randomNoRepeats(array) { var copy = array.slice(0); return function() { if (copy.length < 1) { copy = array.slice(0); } var index = Math.floor(Math.random() * copy.length); var item = copy[index]; copy.splice(index, 1); return item; }; } var chooser = randomNoRepeats(['Foo', 'Bar', 'Gah']); console.log(chooser()); // => "Bar" console.log(chooser()); // => "Foo" console.log(chooser()); // => "Gah" console.log(chooser()); // => "Foo" -- only repeats once all items are exhausted.</code>
このアプローチでは、JavaScript の array slide() メソッドを利用して、元の配列の浅いコピーを作成します。次に、コピーからランダムなアイテムを繰り返し選択してコピーから削除し、すべてのアイテムが使い果たされるまで繰り返しのないランダムな選択を効果的に模倣します。すべてのアイテムを選択すると、コピーがリセットされ、ランダムな選択を再び開始できるようになります。
以上が配列項目を反復せずに効率的にランダムに選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









