我才刚刚开始编程,就遇到了这个问题。论坛上发布的答案并不能真正帮到我,所以我的问题就在这里。我正在尝试创建一个在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
将变量存储在数组中并检查数组中的数字
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)
您可以执行以下操作:
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);