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); // ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
간단할줄 알앗는데 끝내 오류를 고치지 못했다 ........... ㅠㅠㅠㅠㅠㅠㅠ
for (j=1; j<7; j++) {
// 이 부분에 j < 7 를 수정해보세요 j < 10 정도로 하니까 정상적으로 동작합니다