JavaScript:循环中的随机数

JavaScript:循环中的随机数,javascript,Javascript,我想知道如何创建一个JavaScript循环,该循环必须猜测一个正确的数字,1-500 每个循环都应该有一个新的唯一编号,以前从未猜到过。但是,它应该以随机顺序进行猜测 是的: 35120197 否: 1,2,3,4,5,5 到目前为止,我的代码是: 下面是我尝试在所有数字都在500之间的数组上使用fisher-yates洗牌来解决您的问题 var number = 121; var numbArr = []; for(var x = 1; x <= 500; x++){ numb

我想知道如何创建一个JavaScript循环,该循环必须猜测一个正确的数字,1-500

每个循环都应该有一个新的唯一编号,以前从未猜到过。但是,它应该以随机顺序进行猜测

是的:

35120197

否:

1,2,3,4,5,5

到目前为止,我的代码是:


下面是我尝试在所有数字都在500之间的数组上使用fisher-yates洗牌来解决您的问题

var number = 121;

var numbArr = [];

for(var x = 1; x <= 500; x++){
  numbArr.push(x);
}

function shuffle(array) {
  var m = array.length, t, i;

  // While there remain elements to shuffle…
  while (m) {

    // Pick a remaining element…
    i = Math.floor(Math.random() * m--);

    // And swap it with the current element.
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }

  return array;
}

shuffle(numbArr);

for(var x = 0; x < numbArr.length; x++){
  if(number == numbArr[x]){
        console.log("Found number at entry " + x);
  }
}

随机数的猜测是通过使用所有可能的数字的洗牌来实现的,这意味着它不会被再次猜测

您需要存储已随机分配的数字。 如果遇到一个已经随机的数字,请再次随机

var usedNumbers = [];
var interval = setInterval(function(){

    var number = Math.floor(Math.random() * 500) + 1;

    while(usedNumbers.includes(number)){
        number = Math.floor(Math.random() * 500) + 1;
    }
    usedNumbers.push(number);
    if (number == 350){
        console.log("Correct Number!");
        clearInterval(interval);
        return;
    }
    console.log(number);
}, 500)

创建一个数组,数组中的每个数字都在该范围内,对数组进行洗牌,读取值。可能的重复操作效率很低,就像op所描述的那样。每个循环中都应该有一个新的唯一数字。解决方案中可以测试非唯一数字。
var usedNumbers = [];
var interval = setInterval(function(){

    var number = Math.floor(Math.random() * 500) + 1;

    while(usedNumbers.includes(number)){
        number = Math.floor(Math.random() * 500) + 1;
    }
    usedNumbers.push(number);
    if (number == 350){
        console.log("Correct Number!");
        clearInterval(interval);
        return;
    }
    console.log(number);
}, 500)