共k组1~n 不重复随机数生成(扑克牌发牌链表完成)

5 篇文章 0 订阅
3 篇文章 0 订阅
这篇博客探讨了如何生成一副扑克牌,通过编写C++代码实现数字1-13与四种花色的随机组合。核心算法包括生成指定次数的不重复随机数列,确保每个数字和花色均匀分布。最终,这些随机数被组合成52张扑克牌。此过程涉及概率论和算法设计,对于理解随机数生成和数组操作具有实践意义。
摘要由CSDN通过智能技术生成

问题描述:
想要生成一幅扑克牌,数字为1-13,图案为0-3, 随机组合产生52张牌。
拆解:生成4组1-13随机+生成13组0-3随机(就是说52个牌中数字1共4个,2共四个。。。13共四个,花色:0共13个,1共13个。。。3共13个,再组合起来)

生成times组1-num的随机数列:
(核心代码)
int* randomEcho(int num,int times){
//avoir un arr qui inclure des nombres ne sont pas pareil de 1 a num
//生产time次1-num,如num为5,time为4,则生成20个随机数,1-5都出现四次
srand((unsigned)time(NULL));
int arr=malloc(sizeof(int)numtimes);
for(int i=0;i<num
times;i++){
//产生随机数
arr[i]=rand()%num+1;
int count=1;
for(int q=0;q<i;q++){
//加上这个数一共有多少个
if(arr[q]arr[i]){
count+=1;
}
}
//若超过了则重新生成
if(count
times+1){
printf("----%d—%d\n",arr[i],times);
int temp=arr[i];
while(arr[i]==temp){
arr[i]=rand()%num+1;
}
count=0;
}
}
for(int m=0;m<num*times;m++){
printf("%d ",arr[m]);
}
putchar(’\n’);
return arr;
}

用链表使用后:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值