Javascript彩票号码

时间:2014-09-22 13:40:01

标签: javascript

我有这个HTML:

<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次。
  • 第一行数字在表格中用黄色标记,第二行数字用蓝色标记。
  • 如果第一个数字和第二个数字相同(随机数字),则在表格中用绿色标记它们。

1 个答案:

答案 0 :(得分:1)

阵列中的数字范围&amp; fisher yates shuffle

1。不允许相同的随机数在数组中超过1次。

实现这一目标可能是没有经过多次检查的唯一方法是使用包含所有数字的预定义数组。

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

这会创建一个数字数组,其中a是最高数字......

所以,如果你想拥有90个数字...... var myNumbers=numberArray(90);

随机播放此阵列。这段代码是基于着名的渔民洗牌。

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。第一行数字用黄色标记在表格中,第二行数字用蓝色标记它们。

如果你解释那个更好的pls,无论如何使用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


如果您对代码有任何疑问,请询问....