2017-09-27 137 views
-3

如何使用Javascript生成多個唯一的隨機數字?如何使用Javascript生成多個唯一的隨機數字?

我知道這個JavaScript的,

Math.floor((Math.random() * 3) + 1) + ',' + Math.floor((Math.random() * 3) + 1) + ',' + Math.floor((Math.random() * 3) +1) 

但它複製的數量。例如, ,3,1,1可能是結果。 我需要生成3個唯一的隨機數。請幫忙。謝謝。

+0

您必須檢查生成的編號是否以前生成過。提示:這意味着知道以前生成的隨機數存儲在某處。 – Adam

+0

如果不允許重複,那麼得到的集合並不是真正的隨機數;;) –

+0

公平點。但這是我需要的第一步。 3個獨特的數字來顯示.. – chero

回答

0

Array.prototype.includes()

var temp = 0, 
    results = []; 

do { 
    // generate random number 
    temp = Math.floor((Math.random() * 3) + 1); 

    // see if number has already been generated 
    if (!results.includes(temp)) { 
     // it has not, so add it 
     results.push(temp); 
    } 
} while (results.length < 3); 

**不是在IE支邊14日之前,但有一個填充工具

1

如果你不希望使用任何polyfills你可以拿舊的indexOf風格

function getNumber(){ 
    return Math.floor((Math.random() * 3) + 1) 
} 

var numbers = []; 
do { 
    var rnd = getNumber(); 
    if (numbers.indexOf(rnd) == -1){ 
    numbers.push(rnd); 
    } 
} 
while (numbers.length < 3) 
+0

什麼是此功能的JavaScript? – chero

+0

你是什麼意思?這是普通的舊Javascript。 –

+0

它甚至不使用ES5中的任何東西。 –

0

我希望這個代碼可以幫助你:

function GRN() 
{ 
    var availableNumbers = [1,2,3]; 
    var result = []; 
     for (var i = 0;i < 3;i++) 
     { 
      var ix = Math.round(Math.random() * (availableNumbers.length - 1)); 
      result.push(availableNumbers[ix]); 
      availableNumbers.splice(ix,1); 
     } 
    return result; 
} 

GRN函數返回數組中的三個唯一隨機數。