我对编程很新,我一直在研究找到四个随机div并为它们添加一个类的项目 - 我唯一的问题是因为我的随机生成器经常生成相同的数字,程序通常不会将类附加到四个随机div,但很可能是三个甚至两个。所以我的问题是,如果可能的话,我如何设置我的程序只生成四个不同的数字。 我听说过费雪耶茨的尝试,但我没有完全理解。 这是我的JS:
for(var i = 4; i>0; i--){
var rand = Math.floor((Math.random()*16)+1);
var array=new Array();
array[1] = "one";
array[2] = "two";
array[3] = "three";
array[4] = "four";
array[5] = "five";
array[6] = "six";
array[7] = "seven";
array[8] = "eight";
array[9] = "nine";
array[10] = "ten";
array[11] = "eleven";
array[12] = "twelve";
array[13] = "thirteen";
array[14] = "fourteen";
array[15] = "fifteen";
array[16] = "sixteen";
$('#'+array[rand]).addClass('bomb');
}
非常感谢任何帮助!
答案 0 :(得分:1)
一些注释:首先,你应该在for循环之外初始化你的数组,这样它只会执行一次。另外,正如@zerkms指出的那样,你应该在索引0而不是1开始你的数组。为了防止重复一个数字,你可以简单地删除你已经从数组中选择的那个。以下是如何执行此操作的示例:
var array=new Array();
array[0] = "one";
array[1] = "two";
array[2] = "three";
array[3] = "four";
array[4] = "five";
array[5] = "six";
array[6] = "seven";
array[7] = "eight";
array[8] = "nine";
array[9] = "ten";
array[10] = "eleven";
array[11] = "twelve";
array[12] = "thirteen";
array[13] = "fourteen";
array[14] = "fifteen";
array[15] = "sixteen";
for(var i = 4; i>0; i--){
var rand = Math.floor((Math.random()*array.length));
$('#'+array[rand]).addClass('bomb');
array.splice(rand,1);
}
希望这有帮助!
编辑:我删除了导致错误的不必要的while循环。
答案 1 :(得分:0)
这是您的主题问题的示例(从1到13)
for (var i = 0, ar = []; i < 14; i++) { ar[i] = i; }
console.log( ar.sort(function () { return Math.random() - 0.5; }) );
输出:
[1, 2, 0, 3, 5, 6, 13, 4, 8, 9, 12, 10, 7, 11] ->> run first time
[3, 7, 4, 10, 1, 9, 11, 8, 13, 12, 2, 5, 0, 6] ->> runt second time
etc..
答案 2 :(得分:0)
这可以通过首先对数组进行混洗来实现,如an earlier answer中所述。
kfy(array);
for (var i = 0; i < 4; ++i) {
$('#' + array[i]).addClass('bomb');
}