洗牌程序

原创 2005年05月03日 14:14:00

2.洗牌程序:用任何语言,随机分配52张扑克牌到52个位置上,每个位置只容许放一张牌

(原题From http://community.csdn.net/Expert/topic/3971/3971377.xml?temp=.7857324

 以下是我的解答。

 

 

 

 

 

算法:

纸牌数量 const int COUNT = 52;

用数组AssignAlready[COUNT]存放牌是否分配。如果第i  (0 <= i < COUNT)张牌已经分配,那么AssignAlready [i] = 1。数组AssignAlready []的初始值均为0

数组Poker[COUNT]存放发的牌。

0 51 中随机取一个整数iIndex,如果iIndex没有发出去,那么将iIndex放到Poker[]中去,如果iIndex发出去了,那么取其后面第一个没有发出去的牌(设定51后面是0)

 

 

 

 

 

 

void poker(int * const a_iPoker, const int a_iCount)

{

    int *AssignAlready = new int[a_iCount];

    // Assume none of the cards assigned.

    memset(AssignAlready,0,sizeof(int) * a_iCount);

 

 

 

 

 

 

    int i;

    int iIndex;

      

       //Seed the random-number generator with current time so that

    //the numbers will be different every time we run.

       srand( (unsigned)time(NULL));

 

 

 

 

 

 

    for(i = 0; i < a_iCount; i ++)

    {

              // get the random index

              double dRand = (double)rand()  * (a_iCount - 1)/ RAND_MAX;

              iIndex = (int)dRand;

       

              while(AssignAlready[iIndex] == 1)

        {

            iIndex = (iIndex + 1) % a_iCount;           

        }

        a_iPoker[i] = iIndex;

        AssignAlready[iIndex] = 1;

    }

}

 

 

 

 

 

 

上函数中,

用到了头文件<time.h>

 

 

 

 

 

 

main中,输入如下语句:
  const int COUNT = 52;

  int Poker[COUNT];

  poker(Poker,COUNT);

  int i;

  for (i = 0; i < COUNT ; i ++)

  {

      cout<< Poker[i] << endl;

  }

 即可打印出分好的52张牌。

(完毕) ^_^

扑克牌洗牌程序

  • 2013年04月30日 12:11
  • 38KB
  • 下载

扑克牌洗牌发牌程序

  • 2014年11月18日 20:03
  • 4KB
  • 下载

c#实现洗牌程序

洗牌程序,意思就是,打乱现有序列的次序,并每次执行不会出现次序相同的序列的程序。 那么首先想到了使用随机数Random,快速实现如下: public int[] Shuffle(int...

第15周实践项目-洗牌(范型程序设计)(1)

问题描述及代码: /* 02.*copyright (c) 2016,烟台大学计算机学院 03.*All rights reserved. 04.*文件名称:hellow.cpp 05.*作...

C++实践参考:洗牌(范型程序设计)

【项目2:洗牌】   在扑克牌游戏中,每次游戏开始都要求把54张牌重新排列一下,称为洗牌。试编写程序将一副扑克牌(用54个整数1~54表示)随机洗好后,顺序输出54张牌的情况。   参考界面: ...

洗牌程序

之前在写抽样问题——《编程珠玑》读书笔记这篇文章的时候提到将一个数列进行重新排列,目的是弄乱原有数据的排列,相当于洗牌,这篇文章主要讲讲这个洗牌程序的实现。         一、Fisher–Yat...

如何测试洗牌程序

我希望本文有助于你了解测试软件是一件很重要也是一件不简单的事。 我们有一个程序,叫ShuffleArray(),是用来洗牌的,我见过N多千变万化的ShuffleArray(),但是似乎从来没有要想过...

简单的洗牌程序

今天偶尔看到一个题目是要编写一个洗牌程序,思考良久不知从何下手。刚开始是想到要用随机数和set集合,一开始思路是在set里放一个map,然后在map里面放入一个一个String 和set感觉太烦而且工...

Java模拟玩家洗牌发牌小程序

参考了网上了一些内容,自己实现了一个模拟玩家洗牌、发牌的小程序,若有问题欢迎提出,希望我们可以一起进步。QQ:767696856 (其中洗牌是直接通过集合类中的shuffle实现) ...

扑克牌的发牌和洗牌程序

扑克牌的发牌和洗牌程序源代码: public class Poker //扑克类 { private String color; private String ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:洗牌程序
举报原因:
原因补充:

(最多只允许输入30个字)