标题:随机发牌
只看楼主
山经风
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-6
结帖率:0
已结贴  问题点数:20 回复次数:6 
随机发牌
求助  随机发牌  52张4个人  要带花色
搜索更多相关主题的帖子: 发牌 
2013-01-06 22:44
xyaliner
Rank: 2
等 级:论坛游民
帖 子:27
专家分:35
注 册:2012-5-10
得分:4 
一个比较笨的方法:4种花色4个数组,先随机取花色(数组),然后随机取数字(1-13),取完后将此牌从数组中删除,如此循环。
2013-01-06 23:40
滕方明
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2011-11-19
得分:4 
20分有点少
2013-01-06 23:53
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:4 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a[52] = {0};
    int b[4][13] = {0};
    int temp, i, j;

    srand(time(0));
    for (i = 0;i < 52;++i)
    {
        temp = rand() % 52;
        if (a[temp])
        {
            --i;continue;
        }
        a[temp] = 1;
        b[i%4][i/4] = temp;
    }
    for (i = 0;i < 4;++i, puts(""))
    {
        for (j = 0;j < 13;++j)
        {
            switch(b[i][j] % 4)
            {
            case 0:
                printf("红心 ");
                break;
            case 1:
                printf("方块 ");
                break;
            case 2:
                printf("黑桃 ");
                break;
            default:
                printf("梅花 ");
            }

            switch(b[i][j] / 4)
            {
            case 1:
                printf("A\t");
                break;
            case 11:
                printf("J\t");
                break;
            case 12:
                printf("Q\t");
                break;
            case 0:
                printf("K\t");
                break;
            default:
                printf("%d\t", b[i][j] / 4);
            }
        }
    }

    return 0;
}


[ 本帖最后由 azzbcc 于 2013-1-7 00:41 编辑 ]


[fly]存在即是合理[/fly]
2013-01-07 00:37
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
得分:4 
回复 4楼 azzbcc
好题。
猪哥,你有空把代码注释下哈。我等新人看不懂,那个time  puts 啥意思啊,说说思路。
2013-01-07 08:30
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
time(0)是获取1970年1月1日到当前时间的秒数,再用srand吧这个数做随机种子,否则rand产生的随机数是一样的(好像,我也不确定)

puts("")是换行的

思路就是把52张牌依次编号0-51,顺序依次为(红心K、方块K、黑桃K、梅花K、红心A、方块A、黑桃A、梅花A、2、3、4...)


[fly]存在即是合理[/fly]
2013-01-07 09:47
ren613
Rank: 3Rank: 3
来 自:宣武
等 级:论坛游侠
帖 子:117
专家分:120
注 册:2012-11-20
得分:4 
这个书上有,但是注释也不清

天道酬勤
2013-01-10 11:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-395417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.095043 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved