배열 항목 무작위 선택 효율성을 높이는 방법
반복을 피하면서 배열 항목을 무작위로 선택하려면 효율성이 중요한 역할을 합니다. 제공된 코드는 동일한 항목을 여러 번 연속으로 선택하는 것을 효과적으로 방지하지만 성능 향상의 가능성이 있습니다.
재귀 문제와 관련하여 제공된 함수는 자체를 호출하지 않기 때문에 기술적으로 재귀적이라고 할 수 없습니다. 직접 호출하는 것이 아니라 다른 함수(chooseName())를 통해 자신을 호출합니다. 그러나 반복적 성격에서 재귀 함수와 유사점을 공유합니다.
효율성을 높이기 위해 재귀와 유사한 동작을 제거하고 고유 항목을 검색하는 데 소요되는 시간을 크게 줄이는 대체 접근 방식을 채택할 수 있습니다. 이 전략에는 배열의 모든 항목이 소진될 때까지 항목을 무작위로 선택하는 새로운 기능을 만드는 것이 포함됩니다. 모든 항목이 사용되면 함수는 처음부터 다시 시작되어 항목이 반복되지 않도록 합니다.
다음 코드는 이 접근 방식을 구현합니다.
<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']); chooser(); // => "Bar" chooser(); // => "Foo" chooser(); // => "Gah" chooser(); // => "Foo" -- only repeats once all items are exhausted.</code>
이 수정된 접근 방식을 사용하면 재귀적 구현에서처럼 긴 루프 반복 가능성 없이 효율적인 항목 선택을 유지하면서 효과적으로 반복을 피할 수 있습니다.
위 내용은 반복 없이 배열 항목 무작위 선택을 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!