首页 > 解决方案 > 如何显示数组中的随机值?

问题描述

我对javascript相当陌生,并且在制作程序时遇到了一些麻烦。我希望程序询问用户他们想从一副牌中抽取多少张牌,但我需要帮助让我的程序输入最终选择了每个套件的多少张牌。

var NUM =  readInt("How many cards will you draw from the deck?");
var RANDOM = Randomizer.nextBoolean();
var DIAMONDS = "Diamonds";
var HEARTS = "Hearts";
var SPADES = "Spades";
var CLUBS = "Clubs";

function start(){
    var take = takeCard();
    printArray(take);
    countCards(take);
}

// This function will pick a random card from the deck.
//Needs Work
function takeCard(){
    var pick = [];
    for(var i = 0; i < NUM; i++){
    if(Randomizer.nextBoolean()){
        pick.push(DIAMONDS);
        }else{
            pick.push(HEARTS);
            pick.push(SPADES);
            pick.push(CLUBS);
        }
    }
    return pick;
}

// Displays the array
function printArray(arr){
    for(var i = 0; i < arr.length; i++){
        println("Flip Number " + (i+1) + ": " + arr[i]);
    }
}

//Counts the number of Cards in each suite
//Needs Work
function countCards(take){
    var countOne = 0;
    var countTwo = 0;
    var countThree = 0;
    var countFour = 0;
    for(var i = 0; i < take.length; i++){
        if(take[i] == "Heads"){
        countOne++;
    } else {
        countTwo++;
    }
    }
    println("Number of Diamonds: " + countOne);
    println("Number of Hearts: " + countTwo);
    println("Number of Spades: " + countThree);
    println("Number of Clubs: " + countFour);
}

标签: javascript

解决方案


这看起来像家庭作业,所以我不会给你一个完整的工作解决方案,而是解释如何分解它并让你编写代码。

您应该从生成一整副牌开始。有 4 套花色,每套花色有 13 张牌。所以这就像 2 个循环一样简单(一个用于花色,一个用于卡片)。将每张卡片推入一个数组,最终得到一个包含 52 个元素的数组

然后洗牌。最简单的方法是使用一种称为“Fisher-Yates shuffle”的方法。您可以在此处了解如何在 javascript 中执行此操作:如何随机化(随机播放)JavaScript 数组?

然后,您询问用户有多少张卡片,然后简单地使用Array.splice.

最后,你循环遍历你提取的那组,计算不同的花色。


推荐阅读