안녕하세요. 쥐똥박사입니다.
자 이번엔 js로 로또번호 생성하는 소스를 만들어보겠습니다.
JAVASCRIPT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <script type= "text/javascript" > function Lotto() { var lotto = new Array(6); // 6개의 배열이 lotto에 저장 var count = 0; //추출한 로또번호의 갯수 var overl = true ; // 번호중복 여부 변수 while (count < 6) { // 로또번호 6번 얻을 때까지 반복. var number = 0; //랜덤번호 가져오는 변수 number = parseInt(Math.random() * 45) + 1; // 1~45사이에 랜덤번호 추출 for ( var i = 0; i < count; i++) { // 1부터 i까지 반복하여 중복확인 if (lotto[i] == number) { // 중복된 번호가 아니면 넘어가기. overl = false ; } } if (overl) { //중복 없을 시 count 1 증가 lotto[count] = number; //추출된 번호를 배열에 넣기 count++; } overl = true ; //원래 true으로 돌아가기 } var lotto_text = document.getElementById( "lotto_text" ); //입력폼 id 가져오기 // 추첨된 로또번호 출력 lotto_text.value = lotto[0] + ', ' + lotto[1] + ', ' + lotto[2] + ', ' + lotto[3] + ', ' + lotto[4] + ', ' + lotto[5]; } </script> |
HTML
1 | < input type = "text" readonly = "" id = "lotto_text" >< input type = "button" value = "로또번호생성" onclick = "Lotto()" > |
여기서 가장 중요한 것은
9번줄에 있는 parseInt(Math.random() * 45) + 1; 부분대해서 설명 하겠습니다.
parseInt는 정수형 변환 하는겁니다.
안그러면 랜덤 숫자 추출하고나서 +1를 더하지 못하게 됩니다.
왜냐하면 숫자가아닌 문자 타입으로 되어 있기 때문입니다.
Math 함수는 여러가지 수학적 상수와 함수들이 모여 있습니다.
즉 Math.PI 이렇게만 해도 파이값을 구할 수 있습니다.
Math.random()은 숫자가 랜덤값으로 구하게됩니다.
그런데 옆에 왜 *45를 하는 걸까요?
랜덤 값은 소수만 출력 됩니다. ex) 0.15376958879564406
0.15376958879564406 x 45 = 6.91963149580398..
이렇게 해서 정수화해서 소수 없애면 6이 됩니다.
그런데 로또숫자는 0부터가 아닌 1부터 시작 하므로 +1하게됩니다.
그러면 6+1 = 7 이렇게 랜덤숫자 가져오게 됩니다.
이해되셨나요?
'언어 > JavaScript' 카테고리의 다른 글
[js]자바스크립트로 실시간 디지털시계 만들기 (0) | 2017.12.04 |
---|