gpt4 book ai didi

javascript - 从数组中获取不包括先前选择的随机值

转载 作者:行者123 更新时间:2023-11-30 14:46:20 32 4
gpt4 key购买 nike

我已经开始使用 Javascript 构建一个 super 基础的“常识测验”...但我正在努力想出一种有效的方法来获得一个随机问题,不包括以前选择的问题。

目前我有一个名为 previous_questions 的数组,它存储之前选择的问题的索引,以及一个 while 循环,如果该数字已经存在于previous_questions 数组。

var r = Math.floor(Math.random() * questions.length);
while(previous_questions.indexOf(r) >= 0) {
r = Math.floor(Math.random() * questions.length);
}

虽然这目前有效,但我无法想象这是一种有效的方法,并且在没有剩余问题可供选择时可能会导致无限循环。这样做更有效的方法是什么?提前致谢!

最佳答案

实现这一目标的一种方法是打乱问题而不是一次随机选择问题。

function shuffle(a) {
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
}

let questions = ["a", "b", "c", "d", "e", "f"];

shuffle(questions); /* Shuffle the question array */

//Looping thru the shuffled questions
questions.forEach(q => {
console.log(q);
});

shuffle 函数被采取了here

关于javascript - 从数组中获取不包括先前选择的随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48867211/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com