[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

 

 

반응형