我正在尝试从以前的math.random值中获取一个不同的值,因此当数字写入文档时,如果它们相同,则math.random将生成另一个不同的数字。它可能需要继续生成,直到值不同为止。

function rands() {
  return Math.floor(Math.random() * 20) + 1;
}

var rand1 = rands();
var rand2 = rands();
var rand3 = rands();
var rand4 = rands();
var rand = [];

function myFunction() {
  document.getElementById("random1").value = rand1;
  document.getElementById("random2").value = rand2;
  document.getElementById("random3").value = rand3;
  document.getElementById("random4").value = rand4;

  if(rand1 == rand2 || rand1==rand3 || rand1==rand4 || rand2 == rand3 || rand2 == rand4 || rand3==rand4){
  console.log("Duplicate");

    }
}

myFunction()

最佳答案

您可以重写rands函数以查找已使用的值:

function rands(used) {
    let r;
    do {
        r = Math.floor(Math.random() * 20) + 1;
    } while (used.indexOf(r) >= 0);
    return r;
}

var rand = [];
for (let i = 0; i < 4; i++) rand[i] = rands(rand);

09-17 04:31