【问题标题】:Grouping numbers by multiples of 4按 4 的倍数对数字进行分组
【发布时间】:2014-02-01 02:40:12
【问题描述】:

我刚在高中开始 compsci,我正在尝试制作纸牌游戏。

我的老师希望我们创建一个随机洗牌和发牌的功能(用户可以输入他们想要使用多少副牌)。我花了几个小时思考如何做到这一点,并提出了一些想法。我想用一个 int 值表示每张卡,然后根据该数字分配一个卡值。为此,我基本上只想将数字除以 mod 4,得到 1-4 的值(花色值)。

然而,问题是我不知道如何分配牌值(Ace、2、3.... 等)我认为最好的方法是将所有内容按 4 的倍数分组。我想了很久,还是没有想出办法。任何想法都会有很大帮助。谢谢!

【问题讨论】:

    标签: c++ shuffle


    【解决方案1】:

    取西装的数字 mod 4(给出一个从 0 到 3 的数字)。 取数字除以 4 的值(给出一个 0 到 12 的数字,您可以将其加 1 以获得 1 到 13 的值)。 请记住,整数除法将返回数学上精确答案的“下限”。

    对于多个套牌,您首先要除以 4,然后取该 mod 13(如果需要,再添加 1)。

    一种常见的洗牌算法(C语言):

    void shuffle_deck(int *deck) {
        for (int i = DECKSIZE - 1; i > 1 ; --i) {
            int r = rand() % (i + 1);   
            int t = deck[r];  
            deck[r] = deck[i];
            deck[i] = t;
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2021-10-19
    • 2011-11-26
    相关资源
    最近更新 更多