js洗牌算法實現產生隨機數組

在學習排序算法的時候,經常要用到隨機數組,於是就寫了一個生成隨機數組的方法。算法來自網絡,只是修改成了 JavaScript 版本。

基本原理是洗牌算法,首先從所有元素中隨機選取一個與第一個元素進行交換,然後在第二個之後選擇一個元素與第二個交換,直到最後一個元素。這樣能確保每個元素在每個位置的概率都是1/n。

具體代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
*
* 生成從 1 到 length 之間的隨機數組
*
* @length 隨機數組的長度,如果未傳遞該參數,那麼 length 爲默認值 9
*
*/
function randomArray(length) {
var i,
index,
temp,
arr = [length];
length = typeof(length) === 'undefined' ? 9 : length;
for (i = 1; i <= length; i++) {
arr[i - 1] = i;
}
// 打亂數組
for (i = 1; i <= length; i++) {
// 產生從 i 到 length 之間的隨機數
index = parseInt(Math.random() * (length - i)) + i;
if (index != i) {
temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
return arr;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章