셔플링에 JavaScript Array.sort() 사용
JavaScript에서 Array.sort() 메서드와 셔플링에 대한 사용자 정의 비교 함수 사용 배열을 섞는 것은 복잡하고 잠재적으로 신뢰할 수 없는 접근 방식입니다.
이유 Array.sort()는 셔플링에 적합하지 않습니다
대체 셔플링 방법: Fisher-Yates
Fisher-Yates 셔플 알고리즘은 데이터를 재배열하는 효율적이고 안정적인 방법입니다. 무작위 순서로 배열합니다. 작동 방식은 다음과 같습니다.
function shuffle(array) { var tmp, current, top = array.length; if(top) while(--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp; } return array; }
Fisher-Yates가 선호되는 이유
셔플 측정 무작위성
셔플링 알고리즘의 무작위성을 평가하려면 다음과 같은 통계를 계산할 수 있습니다.
이러한 측정항목을 기반으로 Fisher-Yates는 Array.sort()보다 더 고르게 분산된 무작위 셔플을 생성하는 경향이 있습니다.
위 내용은 JavaScript의 셔플링에 Fisher-Yates가 Array.sort()보다 우수한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!