我買了一本JavaScript書,正在按照我的方式工作。我已經達成了一本沒有意義的書。我希望你們和女孩能夠澄清,因爲這本書沒有。用隨機整數值填充數組
請參閱下面的代碼,生成6個隨機數並將它們呈現給id=panel
。
function init(){
var panel = document.getElementById('panel');
var i, rand, temp, str, num = [];
for (i = 1; i < 50; i ++){
num[i] = i;
}
for (i = 1; i < 50; i ++){
rand = Math.ceil(Math.random()*49);
temp = num[i];
num[i] = num[rand];
num[rand] = temp;
}
str = 'Your six lucky numbers:<br>';
for (i = 1; i < 7; i ++){
str += num[i];
if (i !==6){str += ' - ';}
}
panel.innerHTML += str;
}
document.addEventListener('DOMContentLoaded', init, false);
書中說,第二環路(即initilizes隨機變量)中包含的確保無兩個元素包含相同數量的排序算法。
我不知道這是如何可能的,我沒有看到任何代碼在那裏停止rand
包含一個重複的號碼,並因此有該值存儲在num
。這本書並沒有提供很多關於發生的事情的解釋。
有人請讓我知道,如果有的話,循環二是防止'num`包含相同的數字?
謝謝全部
P.S.很抱歉,如果這個問題不符合堆棧溢出指南。我不經常來這裏,只有當我真的陷入困境,無法在其他地方找到答案時。
非常感謝您的解釋。我必須以完全相同的方式去理解它,但不確定我是否正確。 有什麼可以阻止'Math.random()'產生兩次相同的數字? – Pete
沒有,但可以說隨機在第3次和第15次迭代中生成32。它將交換第32和第3個值,因此在swop之後num [32] = 3和num [3] = 32。現在,在第15次迭代中,它將用num [32]替換num [15],但現在num [32]包含3,所以在swop之後num [15] = 3和num [32] = 15。所以,如果它不止一次產生一個隨機值,它並不重要。 –
非常感謝你!我不能爲我的生活找出一個。我瞭解該計劃正在做什麼,而不是它會造成的影響。再次感謝你的分解,正是我需要的+1:D – Pete