반응형
로또번호 발생시키기
1 ~ 45개의 숫자 중 6개의 중복되지 않는 랜덤 번호를 추출하여 오름차순 정렬하시오
[결과]
[코드]
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>09_로또번호</title>
</head>
<body>
<h3>로또번호</h3>
<input type="button" value="로또번호발생" onclick="lotto()">
<div id="demo"></div>
<script>
const lotto = () => {
const num = [];
for(let i=0; i<45; i++) { // 45개의 번호가 들어있는 배열 생성
num.push(i+1)
}
const lotto=[]; // 6개의 로또번호를 저장할 변수
for(let i=0; i<6; i++) {
let rand = Math.floor((Math.random()*num.length)) // num배열의 길이보다 작은 인덱스를 랜덤 추출
lotto.push((num.splice(rand,1))[0]) // 추출한 인덱스번호에 해당하는 값을 lotto 배열에 넣으면서 num배열에서는 삭제함
}
lotto.sort((a,b)=>a-b); // 오름차순 정렬
document.getElementById('demo').innerText = lotto // 출력
}
</script>
</body>
</html>
[다른풀이1]
function lotto() {
let lotto = [] // 6개의 로또번호를 저장할 배열
for (let i=0; i<6; i++) {
lotto[i] = parseInt((Math.random()*45))+1 // 1~45 까지의 정수 랜덤 추출
for(let j=0; j<i; j++) {
if(lotto[i]==lotto[j]) { // 추출한 값이 다른 인덱스의 값과 같은지 중복확인
i-- // 중복값이 배열에 없다면 i에서 1을 빼고 break함
break
}
}
}
lotto.sort((a,b)=>a-b); // 오름차순 정렬
document.getElementById('demo').innerText = lotto // 출력
}
[다른풀이2]
const lotto = () => {
var lotto = [] // 6개의 로또번호를 저장할 배열
while (lotto.length < 6) {
var num = parseInt(Math.random() * 45 + 1); // 1~45 까지의 정수 랜덤 추출
if (lotto.indexOf(num) === -1) { // 추출한 값이 다른 인덱스의 값과 같은지 중복확인
lotto.push(num); // 중복값이 배열에 없다면 num을 lotto배열에 push
}
}
lotto.sort((a,b)=>a-b); // 오름차순 정렬
document.getElementById('demo').innerText = lotto // 출력
}
반응형
'Front-End > JavaScript' 카테고리의 다른 글
JavaScript(7) - 실습 : 회원가입 (0) | 2023.02.17 |
---|---|
JavaScript(6)-2 (0) | 2023.02.16 |
JavaScript(6)-1 (2) | 2023.02.16 |
댓글