簡體   English   中英

在數組中生成唯一數字

[英]Generate Unique Numbers in Array

我是javascript的新手,正嘗試與FunctionsFor循環和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.hasarr.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM