簡體   English   中英

確保只問一次總和(js)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM