Javascript彩票号码

Javascript彩票号码,javascript,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: cente

我有这个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>

博诺洛托
表{边框折叠:折叠;}
td{边框:1px实心#000;文本对齐:中心;宽度:6%;}
随机数();
表();
接下来是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>");
}
randomNumbers1=新数组();
randomNumbers2=新数组();
commonNumbers=新数组();
函数随机数(){
文件。写(“第一行:”);
对于(i=0;i<6;i++){
randomNumbers1[i]=数学地板(数学随机()*49+1);
写(随机数1[i]+“”);
}
文件。写(“
”); 文件。写(“第二行:”); 对于(i=0;i<6;i++){ randomNumbers2[i]=数学地板(数学随机()*49+1); 写(随机数2[i]+“”); } } 函数表(){ 文件。填写(“”); var计数器=0; 对于(i=1;i<50;i++){ 计数器++; 如果(计数器==11){ 计数器=0; 文件。填写(“”); } 文件。写(“+i+”); 如果(计数器==10){ 计数器=0; 文件。填写(“”); } } 文件。填写(“”); }
我如何做才能:

  • 不允许相同的随机数在数组中出现超过1次
  • 表中第一行数字用黄色标记,第二行数字用蓝色标记
  • 如果第一个数字和第二个数字相同(随机数字),则在表中用绿色标记它们

数组中的数字范围和fisher-yates洗牌

一,。不允许相同的随机数在数组中出现超过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)

洗牌这个数组。此代码基于著名的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);
演示

二,。表中第一行数字用黄色标记,第二行数字用蓝色标记

如果你解释得更好,请无论如何使用css类

三,。如果第一个数字和第二个数字相同(随机数字),则在表中用绿色标记它们

您需要在数组中循环,并检查第一个数组中的数字是否等于第二个数组中的数字。 像这样的事

numbersLottery.lastIndexOF(myNumbers[0])!==-1;
这将检查myNumbers的第一个号码是否出现在中奖号码数组中

DEMO2

如果我理解正确,也许这就是你想要的

DEMO3

基于评论图像

数正确的数字

更短更快的洗牌功能

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;
}
性能与其他洗牌功能的对比:



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

不允许相同的随机数在数组中出现超过1次。
不再是随机数。但是你可以使用一个数组<代码> [01,1,31,4[5],[6],[6],[7],[8],[92],[02],[01],随机选择一个数字。@ A1RPUN“随机”并不意味着“均匀分布”。好的答案,但是你应该考虑命名你的变量,这样人类就可以阅读它。这也有助于理解问题。是的,这些是短代码。。。这里的变量很难命名,比如tempNumber1…等等。顺便说一句,我从我的旧代码中复制并通过了…但是如果你有任何问题,只要问一下,我很乐意解释代码。我知道你在回答时是出于善意的,但这很让人困惑。看起来您的函数接受的参数不止一个,但实际上它只是可以用
var
编写的变量。哦,那就是保存字节。。你可以在这里阅读更多关于GoogleFisher-yates shuffle的内容,你可以找到一个包含好变量的较长版本,或者询问你是否理解一些东西。