lotto.js 프로그램

bi_sz·2020년 4월 30일
0

과제

목록 보기
1/6
var num = [];
for ( var i=1; i<47; i++){
    num.push(i)
}

num 이라는 빈 어레이 안에 로또번호 1~46번을 넣었다.


숫자를 랜덤으로 뽑기 위해 Math.random 이라는 함수를 사용할 것인데
Math.random() * 46 를 하면 0 ~ 45. ?????? 이라는 값이 나온다.
Math.floor 으로 반내림을 해 소수점을 없앴더니
0부터 45까지의 값이 나오게 되어 +1 을 해주었다.
46 대신에 위에 선언한 num 을 사용하여

Math.floor(Math.random()*num.length)+1;

코드를 사용할 것이다.

랜덤으로 숫자를 뽑은 값을 저장해야 한다.

var lotto 를 선언하여 뽑은 값이 들어갈 어레이를 만들어준다 .

var lotto = [];
for (var j=1; j<6; j++) {
	var randomNum = Math.floor(Math.random()*num.length)+1;
	}

이렇게 작성하니 값이 들어가긴 하는데 중복값이 나왔다. ㅠㅠㅠㅠㅠ

찾아보니 indexof 라는 함수를 사용하여 중복값이 있으면 넘어가고
다시 숫자를 뽑게끔 코드를 짤 수 있는거 같다.

for (var j=1; j<100; j++) {
    var lottoNum = Math.floor(Math.random()*num.length)+1;
    if ( lotto.indexOf(lottoNum)== -1){
        lotto.push(lottoNum);
        if(lotto.legth == 6){
            break;
        }
    }
}

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 이렇게 하니까 중복값 없이 출력이 되긴 하는데
원하는대로 6개만 뽑는게 아닌 값이 엄청나게 나온다 ㅠㅠㅠㅠㅠ

100번을 실행해서 중복값없이 랜덤값 6개가 들어가면 끝나길 바랬는데 ,,,
왜 더 들어가는지 모르겠다 ,,,

가장 맨 위의 10개가 나온건 20번만 돌렸던것이다.

심지어 나오는 숫자도 계속 개수가 다르다 ㅜㅜ

100번 돌렸을때 40~41개의 숫자가 나온다.

6번만 돌린다면

운 좋게 중복이 없을 경우 6개만 들어가지만 ㅎㅎ
중복이 있을 경우 넘기게 만들었으니 ,,, 숫자가 5개만 들어간다.
ㅋㅋ
ㅠㅠ
ㅠㅠㅠ
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ


작성한 풀 코드

var num = [];
for ( var i=1; i<47; i++){
    num.push(i)
}
var lotto = [];
for (var j=1; j<7; j++) {
    var lottoNum = Math.floor(Math.random()*num.length)+1
    if ( lotto.indexOf(lottoNum)== -1){
        lotto.push(lottoNum);
        if(lotto.legth == 6){
            break;
        }
    }
}
console.log(lotto);
// ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

간단할줄 알앗는데 끝내 오류를 고치지 못했다 ........... ㅠㅠㅠㅠㅠㅠㅠ

1개의 댓글

comment-user-thumbnail
2020년 5월 8일

for (j=1; j<7; j++) {
// 이 부분에 j < 7 를 수정해보세요 j < 10 정도로 하니까 정상적으로 동작합니다

답글 달기