Javascript 编写一个程序来测试纸牌游戏的开手

Javascript 编写一个程序来测试纸牌游戏的开手,javascript,arrays,loops,Javascript,Arrays,Loops,游戏的启动过程如下: 洗牌60张牌 抽7张牌作为你的第一手牌 基本上,我想创建一个程序来测试我的开场白中有多少张牌 $(document).ready(function() { function shuffle(array) { var currentIndex = array.length, temporaryValue, randomIndex; // While there remain elements to shuffl

游戏的启动过程如下:

  • 洗牌60张牌
  • 抽7张牌作为你的第一手牌
  • 基本上,我想创建一个程序来测试我的开场白中有多少张牌

    $(document).ready(function() {
        function shuffle(array) {
            var currentIndex = array.length,
                temporaryValue, randomIndex;
    
            // While there remain elements to shuffle...
            while (0 !== currentIndex) {
    
                // Pick a remaining element...
                randomIndex = Math.floor(Math.random() * currentIndex);
                currentIndex -= 1;
    
                // And swap it with the current element.
                temporaryValue = array[currentIndex];
                array[currentIndex] = array[randomIndex];
                array[randomIndex] = temporaryValue;
            }
    
            return array;
        }
    
        let deckarray = ["Grubbin", "Grubbin", "Grubbin", "Charjabug", "Vikavolt",
            "Vikavolt", "Vikavolt", "Tapu LeLe", "Tapu LeLe", "Tapu Bulu",
            "Tapu Bulu", "Tapu Bulu", "Octillery", "Remoraid", "Remoraid", "N", "N",
            "N", "N", "Skyla", "Skyla", "Skyla",
            "Guzma", "Guzma", "Guzma", "Brigette", "Brigette", "Brigette", "Kukui",
            "Kukui", "Ultra Ball", "Ultra Ball",
            "Ultra Ball", "Ultra Ball", "Heavy Ball", "Rare Candy", "Rare Candy", "Rare 
    Candy", "Rare Candy",
            "Choice Band", "Choice Band", "Choice Band", "Choice Band", "Float Stone",
            "Float Stone", "Energy Recycler",
            "Energy Recycler", "Field Blower", "Field Blower", "Lightning", "Lightning",
            "Lightning", "Lightning",
            "Grass", "Grass", "Grass", "Grass", "Grass", "Grass", "Grass"
        ];
    
        $('#shuffle').click(function() {
            $('#deck').empty();
            shuffle(deckarray);
            var openingHand;
            for (var i = 0; i < 7; i++) {
                openingHand += deckarray[i] + "<br />";
            }
            $('#deck').append(openingHand);
        });
    
        var sevenhand = [];
        var brigettecount = 0;
        $('#stats').click(function() {
            shuffle(deckarray);
            sevenhand.length = 0;
            brigettecount = 0;
            for (var i = 0; i <= 10000; i++) {
                for (var i = 0; i < 7; i++) {
                    sevenhand.push(deckarray[i]);
                }
                if (sevenhand.includes("Brigette")) {
                    brigettecount += 1;
                }
                console.log(brigettecount);
            }
    
        });
    });
    
    $(文档).ready(函数(){
    函数洗牌(数组){
    var currentIndex=array.length,
    时间值,随机指数;
    //虽然还有一些元素需要洗牌。。。
    而(0!==currentIndex){
    //选择剩余的元素。。。
    randomIndex=Math.floor(Math.random()*currentIndex);
    currentIndex-=1;
    //并将其与当前元素交换。
    临时值=数组[currentIndex];
    数组[currentIndex]=数组[randomIndex];
    数组[randomIndex]=临时值;
    }
    返回数组;
    }
    设deckarray=[“Grubbin”、“Grubbin”、“Grubbin”、“Charjabug”、“Vikavolt”,
    “维克沃尔特”、“维克沃尔特”、“塔普乐乐”、“塔普乐乐”、“塔普布鲁”,
    “Tapu Bulu”、“Tapu Bulu”、“Octillery”、“Remoraid”、“Remoraid”、“N”、“N”,
    “N”、“N”、“Skyla”、“Skyla”、“Skyla”,
    “Guzma”、“Guzma”、“Guzma”、“Brigette”、“Brigette”、“Brigette”、“Kukui”,
    “酷魁”,“超级球”,“超级球”,
    “超级球”,“超级球”,“重球”,“稀有糖果”,“稀有糖果”,“稀有糖果”
    糖果“,“稀有糖果”,
    “选择乐队”、“选择乐队”、“选择乐队”、“选择乐队”、“浮石”,
    “浮石”,“能量回收者”,
    “能源回收商”、“现场鼓风机”、“现场鼓风机”、“闪电”、“闪电”,
    “闪电”,“闪电”,
    “草”,“草”,“草”,“草”,“草”,“草”,“草”
    ];
    $('#shuffle')。单击(函数(){
    $('#deck').empty();
    洗牌(点阵);
    var openingHand;
    对于(变量i=0;i<7;i++){
    openingHand+=deckarray[i]+“
    ”; } $('#deck')。追加(openingHand); }); var sevenhand=[]; var BrigetetteCount=0; $('#stats')。单击(函数(){ 洗牌(点阵); sevenhand.length=0; 布里格特计数=0; 对于(var i=0;i请查看

    下面是上面提到的超几何分布的一个快速Javascript实现

    参数包括牌组大小(60)、初始抽牌中的牌数(7)以及要计算概率的牌的重复数(牌组中的3个“Brigette”)

    功能hyperGeo(deckSize、cardsDrawn、通缉){
    //x是*不*抽到一张通缉卡的概率
    //1-x是至少抽取一张通缉卡的概率
    var x=1;
    对于(变量i=0;iconsole.log(hyperGeo(60,7,3));
    那么你的问题是什么?你面临什么具体问题?“感谢任何帮助”太宽泛了。
    10000
    不是javascript能理解的数字。使用
    10000
    还有,你写了
    “稀有的
    糖果”
    在单独的行上,但是JavaScript不允许将单引号的
    或双引号的
    字符串拆分为多行。您不希望字符串中有一个“新行”字符,如
    “稀有\nCandy”
    ,因此您应该确保将字符串写在一行上,如
    “稀有糖果”“
    。如果你想模拟一副真正的牌,你应该
    .pop()
    从deckArray中提取的任何东西。也就是说,你必须每5手开始一副全新的牌。这就是2000副新牌。太好了。谢谢!