javascript random gen nr +循环

时间:2018-01-14 01:05:48

标签: javascript html

我正在尝试制作一个程序,它随机从X问题中挑选出10个问题(目前已经写了14个随机问题)而没有再次选择相同的问题,但是我已经在这个问题上被困了4个小时。

我的问题是“randomNumbers()”函数。此函数生成随机数(分别标记问题),然后检查numberArray是否已生成数字。如果没有,则该数字应该被推送到数组。

我想我认为问题是## VERSION 1 ## for-loops if / else条件。有帮助吗? :(

// edit,is while(true)正确的处理方法吗?

//不要介意## VERSION 2 ##这是我尝试解决问题的第一种方式。

(很多控制台日志确定错误:P)

HTML

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Testimiskeskkond</title>
    <!--<link rel="stylesheet" type="text/css" href="style.css"/> -->
    <script src="scripts/jquery-2.1.4.min.js"></script>
    <script src="scripts/js.js"></script>
</head>
<body>
    <button onclick="startQuiz()">Alusta testimist</button>
    <div id="question1"></div>
    <div id=questions></div>
</body>

JAVASCRIPT

var amountOfQuestions = 11;
var questionCounter = 0;
var numberArray = new Array();


var questions = new Array();
questions[0] = 'Mitu kassi elab P2rnus?',
questions[1] = 'Mis on kassi nimi?',
questions[2] = 'Mida kass teeb?',
questions[3] = 'Millal kass syndis?',
questions[4] = 'Mitu hammast kassil on?',
questions[5] = 'Mitu kyynt on kassil?',
questions[6] = 'Mitu k6rva on kassil?',
questions[7] = 'Mis v2rvi on kass?',
questions[8] = 'Tooli v2rvus?',
questions[9] = 'Laua suurus?',
questions[10] = 'Lemmik jook?',
questions[11] = 'Lemmik s88k?',
questions[12] = 'Raamatupoe nimi?',
questions[13] = 'Viinapoe nimi?';


function startQuiz() {
var setQuestions = "";

while (questionCounter < amountOfQuestions) {
    var random = randomNumbers();
    console.log(random + "appppppi");

    if (questionCounter < amountOfQuestions) {
        setQuestions += questions[random] + "<br>";
        questionCounter += 1;
    } else {
        setQuestions += questions[random];
        questionCounter += 1;
    }

}

$('#questions').html(setQuestions);

}

function randomNumbers() {
var arrLength = numberArray.length;

while (true) {
    console.log(arrLength);

    var randomNr = Math.floor(Math.random() * 14);
    console.log(randomNr + " tereeeeeeeeee");

    /*
    ######################
    ########### VERSION 1
    ######################*/

    if (arrLength == 0) {
        console.log("pppppppppppp");
        numberArray.push(randomNr);
        break;
    } else if (arrLength == 1) {
        console.log("oooooooooooo");
        if (numberArray[0] == randomNr) {
            console.log("xxxxxxxxxxxxx");
            break;
        } else {
            console.log("rrrrrrrrrrrrrrr");
            numberArray.push(randomNr);
            break;
        }
    } else {
        for (var i = 0; i < arrLength-1; i++) {
            console.log("yyyyyyyyyyyyyyyyyyyy");
            if (numberArray[i] == randomNr) {
                console.log("qqqqqqqqqqqqqqqqqqqq");
                continue;
            } else {
                console.log("zzzzzzzzzzzzzz")
                numberArray.push(randomNr);
                break;
            }
        }
    }


    /*
    ######################
    ########### VERSION 2
    ######################

    if (arrLength > 0) {
        console.log("oooooooooooo");
        for (var i = 0; i < arrLength; i++) {
            console.log("yyyyyyyyyyyyyyyyyyyy");
            if (numberArray[i] == randomNr) {
                console.log("qqqqqqqqqqqqqqqqqqqq");
                continue;
            } else {
                console.log("zzzzzzzzzzzzzz")
                numberArray.push(randomNr);
                break;
            }
        }
    } else {
        console.log("pppppppppppp");
        numberArray.push(randomNr);
        break;

    } */
}


return randomNr;
}

1 个答案:

答案 0 :(得分:0)

let selectionCount = 10;
let randomQuestions = [];

while(randomQuestions.length < selectionCount) {
   let randomNr = Math.floor(Math.random() * questionList.length);

   if(!randomQuestions.includes(randomNr)) {
       randomQuestions.push(randomNbr);
   }
}