2014-09-22 2 views
-1

나는이 HTML이자바 스크립트 복권 번호

randomNumbers1 = new Array(); 
randomNumbers2 = new Array(); 
commonNumbers = new Array(); 

function randomNumbers() { 
document.write("First line:"); 
for (i = 0; i< 6; i++) { 
    randomNumbers1[i]=Math.floor(Math.random() * 49 + 1); 
    document.write(randomNumbers1[i] + " "); 
} 

document.write("<br/>"); 

document.write("Second line:"); 
for (i = 0; i< 6; i++) { 
    randomNumbers2[i]=Math.floor(Math.random() * 49 + 1); 
    document.write(randomNumbers2[i] + " "); 
} 
} 

function tables(){ 

document.write("<table>"); 
       var counter = 0; 
      for(i = 1; i < 50; i++) { 
        counter++; 
       if(counter == 11) { 
        counter = 0; 
        document.write("<tr>"); 
       } 
       document.write("<td>" + i + "</td>"); 
       if(counter == 10) { 
        counter = 0; 
        document.write("</tr>"); 
       } 
      } 
document.write("</table>"); 
} 

을 내가 할 수있는 방법 :

  • 이 같은 난수 될 수 없습니다 배열은 1 회 이상
  • 숫자의 첫 번째 줄은 노란색으로 테이블에 표시하고 두 번째 줄에는 파란색으로 표시합니다.
  • 첫 번째 숫자와 두 번째 숫자가 같은 경우 (임의의 숫자) 녹색으로 표에 표시합니다. 배열 &에서 숫자의
+0

'배열에 같은 난수가 1 회 이상 허용되지 않습니다.'더 이상 임의가 아닙니다. 그러나 배열'[0,1,2,3,4,5,6,7,8,9]'를 사용할 수 있으며 그 중에 임의로 번호를 선택할 수 있습니다. – A1rPun

+1

@ AlrPun "random"은 "uniform distribution"을 의미하지 않습니다. –

답변

1

범위 피셔

1. 같은 임의의 숫자 배열 이상 1 시간에 허용하지 셔플 예이츠.

아마도 많은 검사를하지 않고서는 모든 번호를 포함하는 미리 정의 된 배열을 사용하는 것이 좋습니다.

function numberArray(a,b){// highest number, just a placeholder 
b=[];while(a--)b[a]=a+1;return b 
} 

이것은 가장 높은 번호의 숫자 배열을 생성 ...

그래서 당신은 90 개 숫자 ...

var myNumbers=numberArray(90);이 배열 셔플을 갖고 싶어. 이 코드는 유명한 fisher yates shuffle을 기반으로합니다.

function shuffleArray(d,c,b,a){//the array to shuffle, just placeholders... 
for(c=d.length-1;c>0;c--){ 
    b=Math.floor(Math.random()*(c+1)); 
    a=d[c];d[c]=d[b];d[b]=a 
} 
}; 

첫 6 개 번호 myNumbers 셔플 및 추출 :

shuffleArray(myNumbers); 
var winningNumbers=myNumbers.slice(0,6); 

데모

http://jsfiddle.net/L17968n4/

2. 번호의 첫 번째 행이 테이블에 그들을 표시 노란색으로 표시되고 두 번째 줄은 파란색으로 표시됩니다.

더 나은 pls를 설명하면 어쨌든 CSS 클래스를 사용하십시오!

3. 첫 번째 숫자와 두 번째 숫자가 같은 경우 (임의 숫자) 녹색으로 표에 표시하십시오.

첫 번째 배열에있는 숫자가 두 번째 배열의 숫자와 같은지 확인하십시오. 사용해, myNumbers의 첫 번째 숫자는 당첨 번호 어레이에있는 경우처럼 어떤 ...

numbersLottery.lastIndexOF(myNumbers[0])!==-1; 

이 체크한다.

DEMO2

만약 내가 제대로 이해하고 어쩌면 이것은 당신이 원하는 것입니다 ...

http://jsfiddle.net/L17968n4/2/

DEMO3 의견 이미지를 기반으로

01,239,449,566,673,392,983,264,321

0 카운트 정확한 숫자

http://jsfiddle.net/L17968n4/7/

짧은 & 빠른 셔플 기능 .. 다른 셔플 기능 VS

function shuffledArray(a,b,c,d){//array,placeholder,placeholder,placeholder 
c=a.length; 
while(c)b=Math.random()*(--c+1)|0,d=a[c],a[c]=a[b],a[b]=d; 
} 

PERFORMANCE :http://jsperf.com/fyshuffle


코드에 대해 궁금한 점이 있으시면 ...

+0

좋은 답변이지만 인간이 읽을 수 있도록 변수 이름을 고려해야합니다. 또한 문제를 이해하는 데 도움이됩니다. – A1rPun

+0

예, 그 코드는 짧습니다 ... 여기서 변수는 tempNumber1 ...과 같이 이름을 짓기가 어렵습니다. btw 나는 이전 코드에서 복사하고 지나쳤습니다 ...하지만 궁금한 점이 있으면 코드를 설명해 드리겠습니다. – cocco

+0

나는 당신이 좋은 의도로 당신의 대답에 그 코드를 넣었다는 것을 압니다. 그러나 그것은 매우 혼란 스럽습니다. 당신의 함수가 1 개 이상의 매개 변수를 받아들이는 것처럼 보이지만 실제로는 'var'로 쓰여질 수있는 변수 일뿐입니다. – A1rPun