Javascript检查重复的随机数

Javascript检查重复的随机数,javascript,Javascript,我有一个从1到10的随机数和一个从1到10的数组,但缺少一个8和2。我想让JS弄明白这一点,并将8或2推到数组中。 Javascript: var arr = [1, 3, 5, 6, 9, 4, 7, 10]; var num = Math.floor((Math.random() * 10) + 1); for (i = 0; i < arr.length; i++) { while (num == arr[i]) { num = Math.floor((Math.rand

我有一个从1到10的随机数和一个从1到10的数组,但缺少一个8和2。我想让JS弄明白这一点,并将8或2推到数组中。 Javascript:

var arr = [1, 3, 5, 6, 9, 4, 7, 10];
var num = Math.floor((Math.random() * 10) + 1);
for (i = 0; i < arr.length; i++) {
  while (num == arr[i]) {
    num = Math.floor((Math.random() * 10) + 1);
  }
  arr.push(num);
var-arr=[1,3,5,6,9,4,7,10];
var num=Math.floor((Math.random()*10)+1);
对于(i=0;i

不幸的是,它确实生成了一个新的数字,但与先前比较的数字重复。请提供帮助。

您可以查找缺少的数字并在该数组中随机生成一个元素:

var-arr=[1,3,5,6,9,4,7,10];
//构建缺失数字的数组
var missingNumbers=[];

对于(var i=1;i你也可以试试这个

var-arr=[1,3,5,6,9,4,7,10];
var num=parseInt((Math.random()*10)+1)
while(arr.indexOf(num)!=-1){
num=parseInt((Math.random()*10)+1);
}
arr.push(num)
console.log(arr)
我猜出来了

var arr = [1, 3, 5, 6, 9, 4, 7, 10];
var num = Math.floor((Math.random() * 10) + 1);
for (i = 0; i < arr.length; i++) { 

    while (num == arr[i]) {
     num = Math.floor((Math.random() * 10) + 1);  }
     arr.push(num);}
var-arr=[1,3,5,6,9,4,7,10];
var num=Math.floor((Math.random()*10)+1);
对于(i=0;i

基本上,如果它是重复的,我只需将I=0再次循环,直到它是唯一的。它可能没有效率。

函数find返回一个填充了所有重复数字的数组。它经过了优化

函数查找(a、b){
让结果=[];

对于(让i=0;i
var num=Math.floor((Math.random()*arr.length)+1);
如果您知道(或者可以确定),为什么要使用随机数你需要哪些数字?因为这将是在随机变量的中间,所以我不知道究竟会跳出什么。这实际上是被要求的解决方案——一个数组中缺失的随机数。应该被接受的答案。@弗兰:问题是“我要…………把8或2推到数组中……”(第一个vesrion刚说了8,但OP解决了它)。所以我的答案是错误的,上面的方法是合理的。@Fran:FWIW,我在代码中添加了一些注释,如果你愿意,现在就可以这样做。@SourabhSomani:如果你认为你的解决方案更好,就发布它(就像你已经做的那样)。无需再发送另一个答案来表示更好。有10%的情况下,您将不断生成一个新的随机数超过10次,以摆脱循环。您的解决方案成本高昂且不可预测@Sourabhsomani您将保留随机新数,直到您获得丢失的数字。在这种情况下,您需要随机生成另一个数字的几率为80%ber。这是一个非常昂贵且不可预测的解决方案
parseInt
是一种可怕的方法,可以将可能包含小数部分的数字转换为整数。好的,你的解决方案非常棒。