我正在尝试创建一个生成随机数并将其存储在数组中的函数,这样第一次点击就会将随机数发送到索引[0]点击2来索引[1]等。我需要能够将数字与之前的数字进行比较(索引[4]与索引[3]。我确定答案就在我面前,但我找不到解决方案。任何帮助都会很棒
for(i = 0;i < 12;i++) {
var random_number = Math.floor(Math.random() * 12);
var myArray = [];
myArray.push(random_number);
console.log(myArray.length);
document.getElementById("catchme").innerHTML = random_number;
}
});
答案 0 :(得分:0)
var myArray = [];
for(var x = 0, maxValue = 12, random_number; x < 12; x++) {
do {
random_number = Math.floor(Math.random() * maxValue );
} while(random_number == myArray[x - 1]);//Check if the number is the same value
myArray.push(random_number);
}
console.log(myArray);
这不会生成包含随机唯一数字的数组,因为您只检查当前项目之前的项目。
使整个数组中的值唯一:
var myArray = [];
for(var x = 0, maxValue = 12; x < maxValue; x++) {
myArray.splice(Math.floor(Math.random() * myArray.length), 0, x);
}
console.log(myArray);
上面是一个有点hackish的方法,因为它使用带有随机索引的拼接:P 请记住,上面的方法是随机的FAR。
更随机的方法是:
var myArray = [];
for(var x = 0, x < 12; x++) {
myArray.push(x);
}
shuffle(myArray);
console.log(myArray);
您可以使用此处的数组shuffle方法:How to randomize (shuffle) a JavaScript array?