2017-09-08 31 views
0

我想了解爲什麼randomNumber數組中的隨機數不重複。我已經執行了代碼50x,數字在數組中不再重複。 我其實很高興,他們不會重複,但想知道他們爲什麼不重複?或者這是他們不重複的僥倖,我應該很快就會看到重複?爲什麼不在我創建的數組中的任何隨機數不重複?

var numberOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
 
var randomNumbers = []; 
 

 

 
while (randomNumbers.length < 4) { 
 
    var randomnumber = Math.floor(Math.random() * numberOptions.length + 1); 
 
    if (randomNumbers.indexOf(randomnumber) > -1) continue; 
 
    randomNumbers[randomNumbers.length] = randomnumber; 
 
} 
 

 
var html = 
 
    "<p>My 1st number: " + randomNumbers[0] + "</p>" + 
 
    "<p>My 2nd number: " + randomNumbers[1] + "</p>" + 
 
    "<p>My 3rd number: " + randomNumbers[2] + "</p>" + 
 
    "<p>My 4th number: " + randomNumbers[3] + "</p>"; 
 
document.querySelector("#number").innerHTML = html;
<div id="number"> 
 
</div>

+0

我剛纔試了一下,它沒有重複,它只是你現在。也沒有理由讓他們不要重複 – turmuka

+0

真實到你的最後一點。這就是爲什麼我認爲我的目標很奇怪,他們從不重複。只是在我的最後一次僥倖,那聽起來像? –

+0

你正在使用隨機數字發生器,你爲什麼期望它重複? –

回答

0

代碼明確地避免了重複:

while (randomNumbers.length < 4) { //until there are four random numbers, repeat: 
    //generate a random number 
    var randomnumber = Math.floor(Math.random() * numberOptions.length + 1); 
    //if the number is already in the array, go back to the beginning of the loop 
    if (randomNumbers.indexOf(randomnumber) > -1) continue; 
    //if the number is new, add it to the array 
    randomNumbers[randomNumbers.length] = randomnumber; 
} 
2

下面的代碼基本上說:「如果這個數字在我的隨機數數組已經存在,重複這個循環,不要將其保存到我的隨機數數組。」這完全可以防止重複!

if (randomNumbers.indexOf(randomnumber) > -1) continue; 
+0

真棒。謝謝你爲我分手。 –