创建一个返回唯一随机数并将该数字分配给单个变量的函数

问题描述 投票:0回答:2

我才刚刚开始编程,就遇到了这个问题。论坛上发布的答案并不能真正帮到我,所以我的问题就在这里。我正在尝试创建一个在1-12之间生成四个随机数的函数。生成数字后,会将它们分配给单个变量。

var gem1;
var gem2;
var gem3;
var gem4;

function updateGem() {
    gem1 = Math.floor(Math.random() * 12 + 1);
    gem2 = Math.floor(Math.random() * 12 + 1);
    gem3 = Math.floor(Math.random() * 12 + 1);
    gem4 = Math.floor(Math.random() * 12 + 1);
}

您可以看到有时生成的数字是匹配的,这不是我所需要的。我需要每个var都有自己的唯一编号。

The value of gem 1 is 8
The value of gem 2 is 9
The value of gem 3 is 9
The value of gem 4 is 8
javascript function variables random
2个回答
0
投票

将变量存储在数组中并检查数组中的数字

var gem1;
var gem2;
var gem3;
var gem4;
var arr=[];
function updateGem() {
arr=[];
    gem1 = Math.floor(Math.random() * 12 + 1);
    if(arr.includes(gem1))
    updateGem();
    else
    arr.push(gem1);
    gem2 = Math.floor(Math.random() * 12 + 1);
    if(arr.includes(gem2))
    updateGem();
    else
    arr.push(gem2);
    gem3 = Math.floor(Math.random() * 12 + 1);
    if(arr.includes(gem3))
    updateGem();
    else
    arr.push(gem3);
    gem4 = Math.floor(Math.random() * 12 + 1);
    if(arr.includes(gem4))
    updateGem();
    else
    arr.push(gem4);
    
}
updateGem()
console.log(gem1)
console.log(gem2)
console.log(gem3)
console.log(gem4)

0
投票

您可以执行以下操作:

function generateRandomUnique(size) {
  const unique = new Set();
  while (unique.size < size)  {
    unique.add(Math.floor(Math.random() * 12 + 1));
  }
  return [...unique];
}

const [gem1, gem2, gem3, gem4] = generateRandomUnique(4);
console.log(gem1, gem2, gem3, gem4);
© www.soinside.com 2019 - 2024. All rights reserved.