在数组比较中存储随机数

时间:2016-06-09 19:26:04

标签: javascript arrays

我正在尝试创建一个生成随机数并将其存储在数组中的函数,这样第一次点击就会将随机数发送到索引[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;
              }
            });

http://codepen.io/kingnarwal/pen/BzjRjq?editors=1111

1 个答案:

答案 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?