2014-09-22 48 views
-1

我有這個網站:的Javascript開獎號碼

<html> 
<head> 
<meta charset="UTF-8"> 
<title>Bonoloto</title> 
<script src="bonoloto.js"></script> 
<style> 
    table {border-collapse: collapse;} 
    td{border: 1px solid #000; text-align: center; width: 6%;} 
</style> 
</head> 
<body> 
<script> 
    randomNumbers(); 
    tables(); 
</script> 
</body> 
</html> 

而接下來的Javascript:

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 2014-09-22 13:49:31

+1

@ A1rPun「隨機」並不意味着「均勻分佈」。 – 2014-09-22 14:35:41

回答

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 
} 
}; 

洗牌myNumbers並提取第一6號:

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

演示

http://jsfiddle.net/L17968n4/

2.號碼的第一行標記它們在表中黃色和第二行數字標記爲藍色。

如果你解釋說,更好的請,無論如何使用CSS類!

3.如果第一個數字和第二個數字相同(隨機數字)用綠色標記在表格中。

您需要循環檢查數組,並檢查第一個數組中存在的數字是否與第二個數組中的數字相等。 類似的東西...

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

此檢查,如果通過myNumbers的第一個數字是目前的中獎號碼排列英寸

DEMO2

也許這就是你想要什麼,如果我理解正確的...

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

DEMO3

基於評論圖像

http://jsfiddle.net/L17968n4/5/

和計數正確的數字

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

短&更快的隨機播放功能..

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; 
} 

效果對比等功能洗牌:http://jsperf.com/fyshuffle


如果您對代碼有任何疑問,只需要詢問....

+0

好的答案,但你應該考慮命名你的變量,以便人類可以閱讀它。它也有助於理解問題。 – A1rPun 2014-09-22 14:47:29

+0

是的,那些是短代碼...其中變量只是很難名稱tempNumber1 ...等等。順便說一句,我從我的舊代碼複製和過去...但如果你有任何問題只是問,我很樂意解釋代碼。 – cocco 2014-09-22 14:52:35

+0

我知道你把這段代碼放在你的答案中,但意圖很好,但它很混亂。看起來你的函數接受的參數多於1個參數,但它實際上只是可以用'var'編寫的變量。 – A1rPun 2014-09-22 14:59:20