色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript不重復的隨機數

劉艷霞1年前7瀏覽0評論

JavaScript是一門廣受歡迎的編程語言,用于前端開發。在實際的開發中,經常需要生成隨機數。然而,當我們需要生成一組不重復的隨機數時,就需要使用一些特殊的方法來實現。 接下來,我們將深入探討JavaScript中生成不重復的隨機數的方法。

首先,我們需要了解Math.random()函數。該函數返回一個0到1(包括0但不包括1)之間的隨機數字。為了生成指定范圍的隨機數,我們可以使用以下公式:Math.floor(Math.random() * 可能的最大值) + 最小值

//生成0到10之間的隨機整數
Math.floor(Math.random() * 11); 
//生成1到10之間的隨機整數
Math.floor(Math.random() * 10) + 1;

以上兩個例子生成的是隨機數,但可能會有重復的數字。如果我們需要生成一組不重復的隨機數,可以用以下方式:

function generateRandomArray(max, count) {
var arr = [];
for (var i = 0; i < count; i++) {
var num = Math.floor(Math.random() * max);
while (arr.indexOf(num) !== -1) {
num = Math.floor(Math.random() * max);
}
arr.push(num);
}
return arr;
}
//生成10個0到100之間的不重復的隨機整數
generateRandomArray(100, 10);

上面的函數generateRandomArray接受兩個參數,max代表取值范圍的上限,count代表需要生成的隨機數個數。函數中使用了while循環來確保生成的數字不會與已生成的數字重復。當然,這種方法的效率并不高,如果生成的隨機數數量特別大,或者可選數字范圍非常小,這種方法可能會陷入死循環。

另外一種生成不重復隨機數的方法是Fisher-Yates shuffle算法。該算法隨機化輸入數組的順序,從而生成一組隨機數。

function fisherYatesShuffle(arr) {
for (var i = arr.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
//生成10個0到100之間的不重復的隨機整數
var arr = []
for (var i = 0; i < 100; i++) {
arr.push(i);
}
fisherYatesShuffle(arr).slice(0, 10);

上面代碼中的fisherYatesShuffle函數接受一個數組,并隨機化其順序。我們可以使用該函數生成一個可選數字序列,然后取出序列前N個數字作為結果。這樣的方法比起之前的方法效率要高得多,因為我們不需要一步一步檢查生成的數字是否重復,也不需要通過while循環來解決問題。

在使用JavaScript生成不重復隨機數時,我們需要掌握特定的方法和技巧。無論是使用while循環,還是Fisher-Yates shuffle算法,我們都可以在實際的開發中運用這些技巧來生成隨機數。當然,在選擇特定的方法時,我們需要考慮問題的規模和特征,以便最大化方法的效果。