繰り返しのない配列項目を効率的にランダムに選択する方法
コードは、繰り返しを防ぐために最近の選択の配列を作成し、再帰関数を呼び出します選択した項目が最近の選択肢にある場合は、chooseName() という名前が付けられます。このアプローチでは一意性が保証されますが、配列サイズが制限されている場合は無限ループにつながる可能性があります。
Is It a Recursive Function?
はい、chooseName() はそれ自体を呼び出します。ユニークなセレクションを見つけてください。再帰により、関数は最近の選択に含まれていない項目が見つかるまで配列項目を反復処理できます。
効率の向上
無限ループを回避するには、別のアプローチを検討してください。答えで提案されています:
function randomNoRepeats(array) {
var copy = array.slice(0);
return function() {
if (copy.length この関数は、元の配列のコピーを生成し、そこから項目をランダムに選択します。すべての項目が使用されると、元の配列の新しいコピーが作成され、配列が使い果たされた場合でも一意の選択が保証されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3