如何生成不等的随机数

时间:2014-11-04 17:38:16

标签: javascript arrays random

我试图在100到1000之间找到10个随机数,如果任何数字相等,那么我需要让计算机选择不同的随机数。有谁知道怎么做?

<script type="text/javascript">
       var numbers=[];
       var max=110;
       var min=100;
       numbers [1]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [2]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [3]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [4]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [5]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [6]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [7]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [8]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [9]= Math.floor(Math.random() * (max - min + 1)) + min;
       numbers [10]= Math.floor(Math.random() * (max - min + 1)) + min;


    do (numbers[2]);

           while (numbers[1]===numbers[2]);
    do (numbers[3]);

           while (numbers[1] == numbers[3])     
           (numbers[2] == numbers[3]);


       for (i in numbers){
           document.writeln("<br>"+numbers[i]);
       }
    </script>

4 个答案:

答案 0 :(得分:2)

您可以使用类似

的内容
<script>
    var foo = {}

    while (Object.keys(foo).length < 10) {
        foo[Math.floor(Math.random() * (max - min + 1)) + min] = true;
    }

    var numbers = Object.keys(foo);
</script>

答案 1 :(得分:2)

var numbers = [];
var max = 1000;
var min = 100;

while (numbers.length < 10) {
  var num = Math.floor(Math.random() * (max - min + 1)) + min
  if(numbers.indexOf(num)!= -1){
    numbers.push(num)
  }
}

答案 2 :(得分:1)

使用此代码:

var numbers = [];
var max = 110;
var min = 100;

while (numbers.length != 10) {
    var number = Math.floor(Math.random() * (max - min + 1)) + min;

    var exists = false;
    for (var i = 0; i < numbers.length; i++) {
        if (number == numbers[i])
            exists = true;
    }

    if (!exists)
        numbers.push(number);
}

console.log(numbers);

jsfiddle

答案 3 :(得分:1)

您可以继续检查重复的数字,因为在您的情况下它们并不经常出现,但在这种情况下我会实现随机种子,因为您根本不需要检查重复数。 / p>

您要做的就是用自定义随机函数替换Math.random并删除所有不必要的while循环。 示例:

var seed = Math.random(); 
var random = function(){
  return parseFloat('0.'+Math.sin(++seed).toString().substr(6));
};  
var r = [];
for(var i=0; i < 10; i++){
  r[i] = random();
}
document.body.textContent = r.join(' ');

详细了解random seeds