[JavaScript] 무작위 숫자 5개를 뽑아 오름차순으로 정렬 1
Lpla
·2019. 11. 3. 02:36
자바스크립트에서 랜덤한 숫자 5개를 뽑는다고 해보자.
var 랜덤숫자 = Math.floor(Math.random() * 50) + 1;
console.log(랜덤숫자);
Math.random() 은 0 이상 1 미만의 무작위 난수를 생성하는 함수이고,
이를 50으로 곱했기 때문에 0부터 50사이의 난수가 생성된다.
Math.floor 는 소수점 이하를 버리는데 Math.floor(Math.random() * 50) 은 0부터 50사이의 정수를 뽑는다.
단, 50 미만에 50은 포함되지 않기 때문에 +1을 추가하여야 1부터 50까지의 정수를 뽑을 수 있다.
하지만 단 하나의 숫자만을 뽑을 뿐이고 우리가 원하는 것은 5가지의 랜덤 숫자이다.
var 추출 = [];
for (i=1; i<=5; i+=1) {
var 랜덤숫자 = Math.floor(Math.random() * 50) + 1;
추출.push(랜덤숫자);
}
console.log(추출);
이렇게 하면 5가지의 랜덤 숫자가 뽑히고 '추출'이라는 array에 포함된다.
[36, 8, 15, 32, 12] 처럼 무작위 숫자들이 출력되는데 오름차순으로 정렬하면 훨씬 보기 좋을 것이다.
추출.sort(function(a, b){
return a - b;
});
console.log(추출);
sort 함수는 a와 b를 비교하여 양수일 경우, a와 b의 자리를 바꾸고 음수일 경우, 자리를 바꾸지 않는다.
따라서 36 - 8 = 28 양수로 둘의 자리를 바꿔 [8, 36, 15, 32, 12]가 되고
그런 식으로 각각의 숫자를 모두 비교하여 낮은 숫자가 앞에 오게 된다.
하지만 이 방식에는 큰 문제가 있다.
바로 같은 숫자가 두번 이상 뽑힐 수 있다는 점이다.
따라서 로또처럼 뽑힌 숫자는 제외하고 남은 숫자 중에서 다시 뽑는 방식에는 사용할 수 없다.
다음에는 이를 제외하고 뽑는 방법에 대해서 알아보겠다.
다음 포스트 [Javascript] 무작위 숫자 5개를 뽑아 오름차순으로 정렬 2