成都创新互联网站制作重庆分公司

C语言随机函数扑克牌 c语言随机函数srand

用简单c语言,随机输出17张扑克牌,包括花色。大小王也要随机。

1、C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数  

泽普ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。

在调用rand函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。

2、例程:

#include "stdio.h"

#includestdlib.h

#includemath.h

int main()

{

char str[13][5]={{"A"},{"2"},{"3"},{"4"},{"5"},{"6"},{"7"},{"8"},{"9"},{"10"},{"J"},{"Q"},{"K"}};

int b[]={1,2,3,4};//1红桃 2黑桃  3放片  4梅花

char str1[5][10]={{"红桃"},{"黑桃"},{"方块"},{"梅花"},{}};

srand(NULL);

int a,c,i;

int arr[17][2]={0};//记录17个数字a[i][0] 表示数字 a[i][1] 表示颜色   一共54张牌,4张 A--K  1大王 1小王  1-4=A  5-8=2  53 =小王 54 大王,产生不重复的17个数字

int k=0;

while(k17)

{

a=rand()%54+1;//        a53   时候 a=(a-1)/4;//1-4  =0   5-8 ==1  

//      printf("%3d",a);

if(a53)

{

a=(a-1)/4;

c=rand()%4;

for(i=0;i17;i++)

{

if(a==arr[i][0]c==arr[i][1])

break;

}

if(i17)

{

arr[k][0]=a;

arr[k][1]=c;

k++;

}

}

if(a==53||a==54)

{

for(i=0;i17;i++)

{

if(a==arr[i][0])

break;

}      

if(i17)

{

arr[k][0]=a;

arr[k][1]=4;

k++;

}

}

}

for(i=0;i17;i++)

{

//     printf("%s%s\n",str1[arr[i][1]],str[arr[i][0]]);

printf("%d ",arr[i][0]);

}

}

如何用c语言编写纸牌发牌程序

发牌原程序见我的空间(),可选是否包含大小王,可选发牌列数。

以下为改过的版本,不包含大小王(即总数52张),只能发4堆。

另外附加了用户菜单,原程序中不含菜单部分。

代码如下:

---------------------------------------

#include stdlib.h

#include time.h

#include stdio.h

int menu()

{

int choice;

printf("1 发牌/0 退出:");

scanf("%d",choice);

return choice;

}

void main( void )

{

int i1, j, total;

int *iArr;

int tag = 0;

char* pok_C[] = { "黑桃", "红桃", "梅花", "方块" };

char* pok_N[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };

if(!menu()) exit(0);

total = 52;

srand( (unsigned)time( NULL ) );

iArr = (int*)malloc(total*sizeof(int));

for( i1=0; i1total; i1++ )

{

iArr[i1]=rand()%total;

if( i1==0 ) continue;

do {

tag = 0;

for( j=0; ji1; j++ )

if( iArr[j] == iArr[i1] )

{

iArr[i1]=rand()%total;

tag = 1;

}

} while( tag==1 );

}

for( i1=0; i1total; i1++ )

{

printf("%s%s\t",pok_C[iArr[i1]%4],pok_N[iArr[i1]%13]);

if(i1%4==3) printf("\n");

}

free(iArr);

}

c语言程序设计扑克牌游戏?

定义一个结构类型表示一张牌,结构包含3个成员,第一个成员char:取值2,3~K,A表示牌名字,第二个成员int:取值2~14表示牌真实大小。第三个成员:结构链表指针。

写一个初始化函数,定义52大小的结构数组,成员值初值分别和牌对应,遍历数组并将每个元素的链表指针依次指向下一个元素地址。这样得到一个初始链表。(相当于一盒新牌)

所有涉及随机数都用rand函数,洗牌分四份就是循环取随机数m=1~n,n是随循环自减,初值52,直到n变成0。每随一次循环就从初始链表中遍历取出对应第m个节点,并从初始链表中将这个节点断开(既前一个节点指针直接指向后一个节点指针)。每取13张就组成一个新的链表。这样获得4个新链表分别表示4个玩家。

最后出牌就是分别遍历自己的链表,利用循环取牌比较结构数值大小。(取出的牌要从链表断开和上面一样,你把取出节点写成独立函数就能反复使用)。


名称栏目:C语言随机函数扑克牌 c语言随机函数srand
文章地址:http://cxhlcq.com/article/ddioccj.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部