首页 > 解决方案 > 制作宾果游戏。如何从一组中生成要显示的随机数,而不重复生成和显示哪个数字?

问题描述

我正在为我正在学习的课程制作宾果游戏,任务是从预先设置的 Set(); 中生成一个随机选择/元素,显示该随机值(它将是一个字母和数字,例如G78,所以不是整数),然后确保在游戏重置之前不会再次调用该数字

到目前为止,我能够生成一个随机数并显示它,但我不知道如何防止生成器重复它选择显示的集合中的哪个元素

let numbers = new Set();
.add("O65")
            .add("O66")
            .add("O67")
            .add("O68")
            .add("O69")
            .add("O70")
            .add("O71")
            .add("O72")
            .add("O73")
            .add("O74")
            .add("O75");

 let guess = Array.from(numbers);

 let checks = new Array();

 function getRandomNumber()
            {
                function rando()
                {
                    for(let g = guess; g = guess.length; g++)
                    {
                        let rand = guess[Math.floor(Math.random() * 
guess.length)];
                        return rand;
                    }


                }
                let num = rando();
                document.getElementById('bingo').innerHTML = num;
                checks.push(num);
                /*if(numbers.has(num))
                {
                    numbers.delete(num);
                }*/
            }

在这里,我可以生成一个要显示的随机值,但有时我会得到一个已经被调用的值。我不希望这种情况发生,集合中的每个值都应该只生成并显示一次,直到程序被重置或整个集合被调用

标签: javascriptrandomsetnon-repetitive

解决方案


像这样的东西。将您选择的每个数字添加到“测试”列表中,然后在返回之前进行测试以确保新的随机数不在测试列表中。如果'rand'在测试列表中,再次调用rando。如果不是,则返回 'rand'

    let test = []

     function getRandomNumber()
                {
                    function rando()
                    {
                        for(let g = guess; g = guess.length; g++)
                        {
                            let rand = guess[Math.floor(Math.random() * 
    guess.length)]}

       for(m=0; m < test.length; m++){
       if (rand == test[m]){
rando()
return false; 
}}

return rand

}

                        }


}

推荐阅读