【发布时间】:2014-06-30 10:02:37
【问题描述】:
我正在做一个项目。
我基本上是在客户端使用 javascript 重新创建乐透以生成 6 个随机数和一个奖金球。众所周知,乐透号码不可能相同。这就是我的问题所在。
是否可以将已生成的数字从循环中的下一轮可用中删除?这将使函数完全随机。还是我还需要使用 indexOf 将数字与数组中的其他数字进行比较?
例如,以下可能吗?,
生成的第一个数字是 25, 然后该功能会删除该号码,使其无法再次出现。 等等……
这是我的js代码,
function play(){
numbersArray = [];
for (i=0; i<=6;){
n = Math.floor(Math.random()*40)+1;
a = numbersArray.indexOf(n);
if ( a == "-1"){
numbersArray[i] = n;
i++;
var ballId = "ball"+i;
if( i != "7"){
document.getElementById(ballId).innerHTML = '<p>'+ n +'</p>';
} else {
document.getElementById("bonus").innerHTML = '<p>'+ n +'</p>';
}
} //end of if
}//end of for loop
}//end of play function
【问题讨论】:
-
在相同长度的数组中生成所有可能出现在球上的数字。然后打乱数组并取前七个条目。可以把它想象成洗一副牌,然后拿走前 7 张牌。或者,把它想象成一个装满乐透球的玻璃罐,它会四处弹跳,然后取出从洞里掉出来的前 7 个 :)
-
查看here 了解
uniqueRandom()函数。 -
@Pointy 好主意,非常感谢!
标签: javascript math random numbers