[英]Generate Unique Numbers in Array
我是javascript的新手,正嘗試與Functions
, For
循環和If
語句配合使用。 我正在做一個簡單的練習,該練習從一個函數調用中生成5個隨機數。 我努力拼湊的一點邏輯是比較Math.random創建的數字,這些數字被推到數組中。 最好的方法來確保要推入數組的所有數字都是唯一的(無重復)? 我會在For
代碼塊中添加一個If
語句來檢查每個數字,如果它們匹配,請重新運行Math.random函數? 試圖找出這是否是解決問題的最佳方法。
function randoNumbers(min, max){
let randomNumbers = [];
for (let counter = 0; counter < 5 ; counter++){
randomNumbers.push(Math.floor(Math.random() * (max - min) + +min));
}
console.log(randomNumbers);
}
randoNumbers(1, 10);
一個非常簡單的解決方案是生成數字,直到生成的數字尚未包含在數組中,然后將其推送到結果數組:
function randoNumbers(min, max) { const randomNumbers = []; for (let counter = 0; counter < 5; counter++) { let num; do { num = Math.floor(Math.random() * (max - min) + min); } while (randomNumbers.includes(num)) randomNumbers.push(num); } console.log(randomNumbers); } randoNumbers(1, 10);
為了稍微提高復雜度,可以使用Set
代替( set.has
比arr.includes
更快):
function randoNumbers(min, max) { const set = new Set(); for (let counter = 0; counter < 5; counter++) { let num; do { num = Math.floor(Math.random() * (max - min) + min); } while (set.has(num)) set.add(num); } console.log([...set]); } randoNumbers(1, 10);
有很多方法可以解決此問題。 我正在為解決問題做出自己的貢獻。
function randoNumbers(min, max) { let randomNumbers = []; for (; randomNumbers.length < 5;) { const value = Math.floor(Math.random() * (max - min) + +min); if (!randomNumbers.includes(value)) randomNumbers.push(value); } console.log(randomNumbers); } randoNumbers(1, 10);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.