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

Random generator with no duplicated numbers

本文关键字:随机 数字      更新时间:2023-09-26

我有一个数组,需要容纳6个随机生成的数字。以下代码使用了我为实现无重复所做的工作。我原以为在副本中添加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] + '" />';
}

您可以使用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.
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;

尝试使用关联数组

尝试此解决方案。。。

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] + '" />';
}

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;
<div id="numbers"></div>