Javascript - 如何使一堆变量具有与其他变量不同的随机数

时间:2017-11-10 13:35:59

标签: javascript

我正在为一所学校制作STEM游戏,我随机挑选问题数字。有30个问题,但我只想要使用其中的20个。我需要它从1-30(No 0)中随机选择一个数字并将每个随机数设置为某个变量。但我无法弄清楚如何使它不会使用相同的数字两次。有什么帮助吗?

到目前为止我得到的代码:

function onLoad() {
 var N1 = Math.floor(Math.random() * 30) + 1;
 var N2 = Math.floor(Math.random() * 30) + 1;
 var N3 = 0;
 var N4 = 0;
 var N5 = 0;
 var N6 = 0;
 var N7 = 0;
 var N8 = 0;
 var N9 = 0;
 var N10 = 0;
 var N11 = 0;
 var N12 = 0;
 var N13 = 0;
 var N14 = 0;
 var N15 = 0;
 var N16 = 0;
 var N17 = 0;
 var N18 = 0;
 var N19 = 0;
 var N20 = 0;
 
 //Make it so each one is checked so that the same question is not used
 //N1 is gonna be the first question and does not need to be check
 //N2-N20 need to make sure they aren't the same as N1-N20
 
 if (N2 == N1) {
  N2 = Math.floor(Math.random() * 30) + 1;
 }
}

我对检查器有一个很好的想法,但是如果它在开始时是相同的,并且我有它产生一个新的数字它将是相同的数字并且搞乱游戏。

1 个答案:

答案 0 :(得分:1)

首先,您需要生成数字1-30的数组,然后随机播放数组,然后您可以检索数组中的前20个数字。

function getRandomQuestionNumbers() {
  var numbers = [];
  for (var i = 1; i <= 30; i++) {
    numbers.push(i);
  }
  shuffle(numbers);
  return numbers.slice(0, 20);
}  

要获得良好的shuffle功能,请使用this question的最佳答案之一。