Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将52个随机生成的数字打印到控制台?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何将52个随机生成的数字打印到控制台?

Javascript 如何将52个随机生成的数字打印到控制台?,javascript,html,css,Javascript,Html,Css,简单的代码,在一个纸牌游戏中工作,但是我在一开始就遇到了这个错误。我试图生成52个随机数,并打印出与之关联的适当数组元素。这是我的密码: <!DOCTYPE html> <html> <head> </head> <body> <button onclick="shuffleCards()">Shuffle Cards</button> &

简单的代码,在一个纸牌游戏中工作,但是我在一开始就遇到了这个错误。我试图生成52个随机数,并打印出与之关联的适当数组元素。这是我的密码:

    <!DOCTYPE html>
    <html>
    <head>

    </head>
    <body>
        <button onclick="shuffleCards()">Shuffle Cards</button>
        <script>
            function shuffleCards() {
                var cardDeck = ["1S", "1C", "1H", "1D", "2S", "2C", "2H", "2D", "3S", "3C", "3H", "3D", "4S", "4C", "4H", "4D", "5S", "5C", "5H", "5D", "6S", "6C", "6H", "6D", "7S", "7C", "7H", "7D", "8S", "8C", "8H", "8D", "9S", "9C", "9H", "9D", "10S", "10C", "10H", "10D", "11S", "11C", "11H", "11D", "12S", "12C", "12H", "12D", "13S", "13C", "13H", "13D", ];
                var handUser = [];
                var handCPU = [];
                var shuffledDeck = [];
                for (var i = 51; i < 1; i--) {
                    var randomNumber = Math.floor(Math.random()*(i + 1));
                    console.log(cardDeck[randomNumber]);
                }
            }
        </script>
    </body>
</html>

洗牌
函数shuffleCards(){
var cardDeck=[“1S”、“1C”、“1H”、“1D”、“2S”、“2C”、“2H”、“2D”、“3S”、“3C”、“3H”、“3D”、“4S”、“4C”、“4H”、“4D”、“5S”、“5C”、“5H”、“5D”、“6S”、“6C”、“6H”、“6D”、“7S”、“7C”、“7H”、“7D”、“8S”、“9S”、“9C”、“9H”、“9D”、“10S”、“10H”、“10D”、“11C”、“11H”、“11D”、“12C”、“12H”、“12D”、“12C”、“12C”、“12D”、“7C”、“7C”、“8C”、“8C”、“8C”、“13C”、“13D”、“13D”];
var handUser=[];
var handcup=[];
var shuffledDeck=[];
对于(变量i=51;i<1;i--){
var randomNumber=Math.floor(Math.random()*(i+1));
控制台日志(cardDeck[随机编号]);
}
}

for循环迭代器i开始时大于1,因此它不小于1。将操作符改为>,而不是,这非常简单,实际上,for循环的条件从来都不是真的,它应该是
i>==0
。如果
i=51
,则
i<1
将永远不会为真。

您的解决方案的一个问题是,它不能保证每次都会返回一张唯一的卡,我认为您希望保证这一点

如果这是真的,则此解决方案将迭代52次,每次使用
拼接
方法从卡组中取出卡:

var cardDeck = ["1S", "1C", "1H", "1D", "2S", "2C", "2H", "2D", "3S", "3C", "3H", "3D", "4S", "4C", "4H", "4D", "5S", "5C", "5H", "5D", "6S", "6C", "6H", "6D", "7S", "7C", "7H", "7D", "8S", "8C", "8H", "8D", "9S", "9C", "9H", "9D", "10S", "10C", "10H", "10D", "11S", "11C", "11H", "11D", "12S", "12C", "12H", "12D", "13S", "13C", "13H", "13D", ];
var total = cardDeck.length;
for (var i = 0; i < total; i++) {
  var randomPos = Math.floor((Math.random() * (cardDeck.length-1)));
  var randomCard = cardDeck.splice(randomPos, 1).pop();
  console.log(randomCard);
}
var cardDeck=[“1S”、“1C”、“1H”、“1D”、“2S”、“2H”、“2D”、“3S”、“3C”、“3H”、“3D”、“4C”、“4H”、“4D”、“5S”、“5C”、“5H”、“5D”、“6S”、“6C”、“6H”、“6D”、“7S”、“7C”、“7H”、“7D”、“8S”、“8D”、“9S”、“9H”、“9D”、“10S”、“10H”、“10D”、“11S”、“11H”、“11D”、“12S”、“12H”、“12D”、“12H”、“12D”、“13D”、“13H”, ];
var总计=cardDeck.length;
对于(变量i=0;i

函数shuffleCards(){
console.log('test')
var cardDeck=[“1S”、“1C”、“1H”、“1D”、“2S”、“2C”、“2H”、“2D”、“3S”,
“3C”、“3H”、“3D”、“4S”、“4C”、“4H”、“4D”、“5S”、“5C”、“5H”、“5D”、“6S”、“6C”,
“6H”、“6D”、“7S”、“7C”、“7H”、“7D”、“8S”、“8C”、“8H”、“8D”、“9S”、“9C”、“9H”、“9D”,
“10S”、“10C”、“10H”、“10D”、“11S”、“11C”、“11H”、“11D”、“12S”、“12C”、“12H”、“12D”,
“13S”、“13C”、“13H”、“13D”];
var handUser=[];
var handcup=[];
var shuffledDeck=[];
对于(变量i=51;i>0;i--){
var randomNumber=Math.floor(Math.random()*(i+1));
控制台日志(cardDeck[随机编号]);
}
}
洗牌

这很有效…

还有一种洗牌方法。 此方法显示了一种不拼接原始阵列的方法。 对于小型阵列,克隆阵列并在必要时从中删除项目非常简单快捷,但是如果我们处理的是一个真正的大型阵列,那么使用对象跟踪使用过的项目是一种很好的方法

function shuffleCards() {
    var cardDeck = ["1S", "1C", "1H", "1D", "2S", "2C", "2H", "2D", "3S", "3C", "3H", "3D",
            "4S", "4C", "4H", "4D", "5S", "5C", "5H", "5D", "6S", "6C", "6H", "6D",
            "7S", "7C", "7H", "7D", "8S", "8C", "8H", "8D", "9S", "9C", "9H", "9D",
            "10S", "10C", "10H", "10D", "11S", "11C", "11H", "11D",
            "12S", "12C", "12H", "12D", "13S", "13C", "13H", "13D"];
    var used = {};
    var shuffledDeck = [];
    while (shuffledDeck.length < 52) {
        var randomNumber = Math.floor(Math.random() * (51 + 1));
        if (!used[randomNumber]) {
            shuffledDeck.push(cardDeck[randomNumber]);
            used[randomNumber] = true;
        }
    }
    console.log(shuffledDeck.length, shuffledDeck);
}
shuffleCards();
函数shuffleCards(){ var cardDeck=[“1S”、“1C”、“1H”、“1D”、“2S”、“2C”、“2H”、“2D”、“3S”、“3C”、“3H”、“3D”, “4S”、“4C”、“4H”、“4D”、“5S”、“5C”、“5H”、“5D”、“6S”、“6C”、“6H”、“6D”, “7S”、“7C”、“7H”、“7D”、“8S”、“8C”、“8H”、“8D”、“9S”、“9C”、“9H”、“9D”, “10S”、“10C”、“10H”、“10D”、“11S”、“11C”、“11H”、“11D”, “12S”、“12C”、“12H”、“12D”、“13S”、“13C”、“13H”、“13D”]; 使用的var={}; var shuffledDeck=[]; 而(shuffledDeck.length<52){ var randomNumber=Math.floor(Math.random()*(51+1)); 如果(!使用了[randomNumber]){ shuffledDeck.push(cardDeck[randomNumber]); 使用的[随机数]=真; } } log(shuffledeck.length,shuffledeck); } shuffleCards();
在for循环中,
for(var i=51;i<1;i--)
i从不小于1。也许应该是>1,如果您希望每张卡片只出现一次,请查看感谢您的快速响应,我知道它还不会返回唯一的卡片。我只是想先让这个循环发挥作用,然后再在每次迭代中从数组中拼接出元素。谢谢你的帮助。@Will你在哪里运行它?你的逻辑不起作用。循环没有给出52张随机卡。@Will问题不是52张随机卡,而是52个从列表中返回卡的随机数。语义我知道,但他的问题是for循环。
function shuffleCards() {
    var cardDeck = ["1S", "1C", "1H", "1D", "2S", "2C", "2H", "2D", "3S", "3C", "3H", "3D",
            "4S", "4C", "4H", "4D", "5S", "5C", "5H", "5D", "6S", "6C", "6H", "6D",
            "7S", "7C", "7H", "7D", "8S", "8C", "8H", "8D", "9S", "9C", "9H", "9D",
            "10S", "10C", "10H", "10D", "11S", "11C", "11H", "11D",
            "12S", "12C", "12H", "12D", "13S", "13C", "13H", "13D"];
    var used = {};
    var shuffledDeck = [];
    while (shuffledDeck.length < 52) {
        var randomNumber = Math.floor(Math.random() * (51 + 1));
        if (!used[randomNumber]) {
            shuffledDeck.push(cardDeck[randomNumber]);
            used[randomNumber] = true;
        }
    }
    console.log(shuffledDeck.length, shuffledDeck);
}
shuffleCards();