因此,我正在制作一个JavaScript彩票,其中包含6个随机生成的数字。有人知道如何防止这些数字相同吗?
谢谢
代码:
'use strict';
function generatenumbers(){
let number = [];
let i;
i=0;
for(i= 0; i <= 5; i++){
number[i] = Math.floor(Math.random()*40);
}
document.getElementById("generated").innerHTML = "";
i = 0;
for(i=0; i<= number.length - 1; i++){
let node = document.createElement("LI");
let txt = document.createTextNode(number[i]);
node.appendChild(txt);
document.getElementById("generated").appendChild(node);
}
}
HTML:
<body>
<div id="container" class="cf">
<header>
<h1>Hipster Powered Lottery</h1>
</header>
<section>
<h2>Play with our wonderful lottery est. 1831</h2>
<a href="#" id="generate" onclick="generatenumbers()">Generate my numbers!</a>
<ul id="generated"></ul>
</section>
<aside>
<h2>Previously generated set</h2>
<ul id="previous"></ul>
</aside>
</div>
</body>
random()函数随机生成数字,因此有可能再次出现一个数字。为避免通过random()函数生成新的数字,您可以检查此数字是否已存在于数组中。仅当它不存在时才将其添加到您的阵列中。下面提供了一个有效的代码段:
function generatenumbers(){
var number = new Array();
var i=0;
while(i<6){
var val = Math.floor(Math.random()*40);
if(number.includes(val) === false){
number.push(val);
i++;
}
}
document.getElementById("generated").innerHTML = "";
i = 0;
for(i=0; i<= number.length - 1; i++){
let node = document.createElement("LI");
let txt = document.createTextNode(number[i]);
node.appendChild(txt);
document.getElementById("generated").appendChild(node);
}
}
创建随机数时,仅使用数组中尚未存在的数字:
var number = [];
for(i= 0; i <= 5; i++){
var num;
while ( number.includes( num = Math.floor(Math.random()*40) ) );
number[i] = num;
}
console.log(number);
空的while
循环反复选择一个数字,直到找到不在number
数组中的数字。只有成功完成之后,才将其添加到数组中。
一个while循环以选择另一个已经使用过的数字吗?
let numbers = [];
for(let i= 0; i <= 5; i++){
let num;
do {
num = Math.floor(Math.random()*40);
} while (numbers.includes(num));
numbers.push(num);
}
...