소개
반복 없이 배열에서 항목을 무작위로 선택하는 것이 일반적인 프로그래밍입니다. 일. 그러나 항목 풀이 지속적으로 수정되는 경우 효율성 확보가 중요합니다.
질문
개발자가 배열에서 항목을 무작위로 선택하는 기능을 구현했습니다. 반복을 피하기 위해 최근 선택 목록을 유지하면서. 하지만 효율성에 대한 우려를 표명하며 좀 더 최적의 접근 방식이 있는지 문의합니다.
답변
1. 재귀 설명
제공된 코드는 실제로 재귀 함수인 것으로 보입니다. 재귀에는 자신을 호출하는 함수가 포함되어 있어 특정 시나리오에서는 비효율성을 초래할 수 있습니다.
2. 효율성 향상
효율성을 높이려면 다음 대체 접근 방식을 고려하십시오.
코드 구현:
<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']);</code>
설명:
이 접근 방식 최근 선택 항목의 배열을 관리하는 코드에서 무작위 선택 논리를 분리합니다. 결과적으로 선택기 기능 실행 시 한 번만 무작위 선택이 발생하므로 효율성이 향상됩니다.
복사본이 고갈될 때마다 복사본을 재설정하여 모든 항목이 동일한 확률로 선택되도록 보장하는 기능입니다. 이렇게 하면 코드가 "고유한" 이름을 찾으려고 무한 루프에 갇히게 되는 잠재적인 문제가 제거됩니다.
위 내용은 특히 배열이 지속적으로 수정되는 경우 반복 없이 배열에서 무작위 항목을 효율적으로 선택할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!