[英]Make sure a sum is asked only once (js)
我有一個乘法游戲,我想要一個隨機數 12 次,但是我怎么能在不重復數字的情況下得到它。 這是我嘗試過的,但我一直在返回“未定義”。 (我使用的是 Firefox 51.0.1)
$(".input").val("");
var numbers_used = [];
var current_number = 0;
var max_num = 12;
var base_number = parseInt(prompt("Enter which table you want to practice.", "5"));
var maxScore = 12;
var questionsAnswered = 0;
var questionsAnsweredCorrect = 0;
var questionsAnsweredWrong = 0;
var asked1 = false;
var asked2 = false;
var asked3 = false;
var asked4 = false;
var asked5 = false;
var asked6 = false;
var asked7 = false;
var asked8 = false;
var asked9 = false;
var asked10 = false;
var asked11 = false;
var asked12 = false;
function new_random_number() {
var new_current_number = Math.round(Math.floor((Math.random() * max_num) + 1));
return new_current_number;
}
function overallNumber() {
current_number = new_random_number();
if((current_number == 1 && !asked1) ||
(current_number == 2 && !asked2) ||
(current_number == 3 && !asked3) ||
(current_number == 4 && !asked4) ||
(current_number == 5 && !asked5) ||
(current_number == 6 && !asked6) ||
(current_number == 7 && !asked7) ||
(current_number == 8 && !asked8) ||
(current_number == 9 && !asked9) ||
(current_number == 10 && !asked10) ||
(current_number == 11 && !asked11) ||
(current_number == 12 && !asked12)
){
if(current_number == 1)
asked1 = true;
if(current_number == 2)
asked2 = true;
if(current_number == 3)
asked3 = true;
if(current_number == 4)
asked4 = true;
if(current_number == 5)
asked5 = true;
if(current_number == 6)
asked6 = true;
if(current_number == 7)
asked7 = true;
if(current_number == 8)
asked8 = true;
if(current_number == 9)
asked9 = true;
if(current_number == 10)
asked10 = true;
if(current_number == 11)
asked11 = true;
if(current_number == 12)
asked12 = true;
return current_number;
} else overallNumber();
當我不斷調用這個函數時,它開始返回“未定義”。 任何解決方案? 謝謝 :)
代碼應該是不言自明的,主要是您必須使用數組跟蹤使用的數字。
var number; var maxNumber = 5; var usedNumbers = []; function getUnusedRandomNumber(){ // keep generating a random number, until you find one that has not been used do{ var randomNumber = getRandomNumber(); } while(usedNumbers.indexOf(randomNumber) != -1); // store used numbers into array usedNumbers.push(randomNumber); return randomNumber; } function getRandomNumber() { var randomNumber = Math.round(Math.floor((Math.random() * maxNumber) + 1)); return randomNumber; } alert(getUnusedRandomNumber()); alert(getUnusedRandomNumber()); alert(getUnusedRandomNumber()); alert(getUnusedRandomNumber()); alert(getUnusedRandomNumber());
更簡潔的代碼是生成不重復的隨機數是
var nums = [], numsLen = 12, maxNum = 12, num;
while (nums.length < numsLen) {
num = Math.round(Math.random() * maxNum);
if (nums.indexOf(num) === -1) {
nums.push(num);
}
}
console.log(nums);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.