2017-09-27 176 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函数返回数组中的三个唯一随机数。