반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코딩
- 프로그래밍언어
- 버전관리
- 자바스크립트
- 2
- 데이터베이스
- 네트워크
- 소프트웨어공학
- 자료구조
- 인공지능
- 웹개발
- 데이터과학
- 네트워크보안
- 사이버보안
- 소프트웨어
- 데이터분석
- I'm Sorry
- 데이터구조
- 알고리즘
- 빅데이터
- Yes
- 머신러닝
- 딥러닝
- 보안
- 컴퓨터과학
- 프로그래밍
- 클라우드컴퓨팅
- 컴퓨터공학
- 컴퓨터비전
- 파이썬
Archives
- Today
- Total
스택큐힙리스트
자바스크립트 배열을 랜덤하게 재정렬(셔플)하는 방법? 본문
반응형
이렇게 배열이 있습니다:
var arr1 = [a, b, c, d];
이를 어떻게 무작위로 섞을 수 있을까요?
답변 1
사실적으로 공정한 섞기 알고리즘은 Fisher-Yates(일명 Knuth) 섞기 입니다.
여기에서 훌륭한 시각화를 볼 수 있습니다 (그리고 원본 글은 이곳에 링크되어 있습니다)
function shuffle(array) {
let currentIndex = array.length, randomIndex;
// 남은 요소가 있는 동안만.
while (currentIndex > 0) {
// 남은 요소 중 하나 선택.
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
// 현재 요소와 선택한 요소를 교환.
[array[currentIndex], array[randomIndex]] = [
array[randomIndex], array[currentIndex]];
}
return array;
}
// 다음과 같이 사용될 수 있음.
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);
이 알고리즘에 대한 추가 정보.
답변 2
어떻게 JavaScript 배열을 무작위로 섞을 수 있을까요? 배열을 무작위로 섞는 방법에 대해 알아보려면 다양한 방법과 기술을 활용할 수 있습니다. 이들을 살펴보고자 하겠습니다. JavaScript에서 고유한 무작위 정렬 기능을 구현하려면 Fisher-Yates 알고리즘을 사용하여 배열 요소를 섞을 수 있습니다.처음으로 Fisher-Yates 알고리즘을 통해 배열을 섞는 방법을 알아보겠습니다. 이 알고리즘은 원래 Knuth-Fisher-Yates 셔플 알고리즘으로 알려져 있으며, 배열을 효과적으로 섞을 수 있는 방법 중 하나입니다. 이 알고리즘은 배열의 모든 요소를 앞과 뒤에서부터 순차적으로 탐색하면서 각 요소를 무작위로 선택한 다음 현재 위치와 선택한 위치의 요소를 서로 교환합니다. 이 과정을 배열의 모든 요소에 대해 반복하면, 배열이 무작위로 섞이게 됩니다. 이 알고리즘의 시간 복잡도는 O(n) 이며, 0부터 n-1까지의 인덱스 범위 내에서 요소를 무작위로 선택하기 때문에 고유하고 효과적인 무작위 정렬을 제공합니다.
예를 들어, Fisher-Yates 알고리즘을 사용하여 JavaScript 배열을 섞는 코드를 살펴보겠습니다.
```javascript
function shuffleArray(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// 배열의 모든 요소에 대해 반복
while (0 !== currentIndex) {
// 무작위로 선택한 위치의 요소와 현재 위치의 요소를 교환
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
// 사용 예시
var myArray = [1, 2, 3, 4, 5];
console.log(shuffleArray(myArray));
```
위의 코드는 shuffleArray라는 함수를 정의하고, Fisher-Yates 알고리즘을 사용하여 입력된 배열을 섞은 후 결과 배열을 반환합니다. Math.random() 함수를 통해 0 이상 1 미만의 무작위한 실수를 생성하고, currentIndex 변수를 통해 현재 위치를 추적하여 배열의 모든 요소를 순회하면서 요소를 교환하는 과정을 반복합니다. 마지막으로, 섞여진 배열을 반환합니다.
이 방법을 사용하면 JavaScript 배열을 무작위로 섞을 수 있고, 이를 활용하여 다양한 활동에 유용하게 사용할 수 있습니다. Fisher-Yates 알고리즘은 배열 요소의 순서를 쉽게 섞을 수 있는 효과적인 방법입니다. 이 어떠한 방법도 사용자에게 무작위한 결과를 제공하며, 홈페이지나 게임, 데이터 처리 등 다양한 문제에서 활용될 수 있습니다.
반응형
Comments