728x90
반응형
질문 : JavaScript 배열을 무작위로 섞는 방법은 무엇입니까?
다음과 같은 배열이 있습니다.
var arr1 = ["a", "b", "c", "d"];
무작위로 섞는 방법은 무엇입니까?
답변
사실상 편향되지 않은 셔플 알고리즘은 Fisher-Yates (일명 Knuth) 셔플입니다.
https://github.com/coolaj86/knuth-shuffle 참조
여기에서 멋진 시각화를 볼 수 있습니다 (그리고 여기에 링크 된 원본 게시물).
function shuffle(array) {
var currentIndex = array.length, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// And swap it with the current element.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
return array;
}
// Used like so
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);
주의 : 위의 예는 기본 요소의 배열에만 적용됩니다. 배열에 참조가 포함되어 있으면 설정되는 값을 temporaryValue
로 복제 해야합니다. array[randomIndex]
의 참조가 currentIndex와 randomIndex로 설정됩니다.
사용 된 알고리즘에 대한 추가 정보.
출처 : https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
Node.js 프로젝트 용 package.json 파일을 자동으로 빌드하는 방법 (0) | 2021.06.30 |
---|---|
중첩 된 객체, 배열 또는 JSON에 액세스하고 처리하는 방법 (2) | 2021.06.29 |
HTML을 사용하여 문서의 모든 페이지에 머리글과 바닥글을 출력하는 방법 (0) | 2021.06.29 |
angular HTML 바인딩 (0) | 2021.06.29 |
jQuery에서 여러 CSS 속성을 정의하는 방법 (0) | 2021.06.28 |