随机生成器没有重复的数字

时间:2014-10-21 07:49:25

标签: javascript html arrays

我有一个数组需要保存6个随机生成的数字。我使用以下代码完成了 no duplicatelicates 所做的工作。我认为这可以通过在副本中添加1来起作用,但是它会再次出现在最后!

userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
var msg = '';

for(var i=0;i<numbers.length;i++)
{
    numbers[i] = Math.random() * userInput;
    numbers[i] = Math.floor(numbers[i]);
    if(numbers[i] == numbers[i-1]){
        numbers[i] = numbers[i++];  
    }
    msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';

}


document.getElementById('numbers').innerHTML = msg;

我也尝过这个,但这也没有用!

for(var i=0;i<numbers.length;i++)
{
    numbers[i] = Math.random() * userInput;
    numbers[i] = Math.floor(numbers[i]);
    for(var b=0;b<numbers.length;b++)
    {
        if(numbers[b] == numbers[b--]){
            numbers[b] = numbers[b++];  
        }
    }
    msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';

}

4 个答案:

答案 0 :(得分:1)

您可以使用indexOf检查数字是否已在数组中。如果是,您可以生成一个新号码。

var userInput = document.getElementById('txtGen').value;
var numbers = new Array(6);
for (var i = 0; i < numbers.length; i++)
{
    var temp = 0;
    do
    {
        temp = Math.floor(Math.random() * userInput);
    }
    while (numbers.indexOf(temp) > -1)

    numbers[i] = temp;
}

document.getElementById("numbers").innerHTML = numbers.join(); // <- Write numbers to div.

答案 1 :(得分:0)

userInput = document.getElementById('txtGen').value;
var numbers = new Array(6),tempNo=new Array(6);
var msg = '';

for(var i=0;i<numbers.length;i++)
{
    tempNo[i] = Math.random() * userInput;
    if(!numbers[tempNo[i]]){
        numbers[Math.floor(tempNo[i])] = Math.floor(tempNo[i]);
        msg += '<input id="num' + i + '"' + 'type="text" value="' + Math.floor(tempNo[i]) + '" />';
    }

}

document.getElementById('numbers').innerHTML = msg;

尝试使用关联数组

答案 2 :(得分:0)

试试这个解决方案......

for(var i=0;i<numbers.length;i++)
{
    numbers[i] = Math.random() * userInput;
    numbers[i] = Math.floor(numbers[i]);
    for(var b=1;b<numbers.length;b++)
    {
        if(numbers[b] == numbers[b--]){
            numbers[b] = Math.random() * userInput;
            numbers[b] = Math.floor(numbers[b]);
            b=1;
        }
    }
    msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';

}

答案 3 :(得分:0)

&#13;
&#13;
var output =document.getElementById('numbers'),
    numbers = new Array(6),
    msg = '';

for(var i=0;i<numbers.length;i++){  
    numbers[i] = randomNumber()
    msg += '<input id="num' + i + '"' + 'type="text" value="' + numbers[i] + '" />';
}

function randomNumber(max){
  max = (max > 0) ? max : 100; 
  var a = 1 + max*(Math.random());
  return Math.round(a);  
}


output.innerHTML = msg;
&#13;
<div id="numbers"></div>
&#13;
&#13;
&#13;