洗扑克牌算法
来源:互联网 发布:怎么做淘宝客赚钱 编辑:程序博客网 时间:2024/04/30 03:03
一副扑克共有52张,4中花色
如果我们随机的生成一个数字和花色的话,可能会产生和前面一样的数据。这里我们采用随机换牌的方法洗牌
(1)先按顺序生成一副扑克
(2)产生一个0~51的随机数,将此随机数作为扑克的下标与第i张牌交换,然后随机的交换52次结束。就会得到一个打乱顺序的扑克
其中ASCII中的3,4,5,6对应着扑克中的红桃,方片,梅花,黑桃
实现代码如下:
#include <stdio.h>#include <stdlib.h>#include <time.h>typedef struct card{int sign; //表示花色char number; //表示数字}card;card oneCard[52];void display(){for(int i=0; i<52; i++){if(i%13 ==0){printf("\n");}printf("%c%c\t",oneCard[i].sign,oneCard[i].number);}printf("\n");}void shuffle(){int sign,temp,random;card tempCard;sign = 2;for(int i=0; i<52; i++){//先生成一副扑克if(i%13 == 0){sign++;}oneCard[i].sign = sign;temp = i%13;switch(temp){case 0:oneCard[i].number = 'A';break;case 9:oneCard[i].number = '0'; //这里用0当10break;case 10:oneCard[i].number = 'J';break;case 11:oneCard[i].number = 'Q';break;case 12:oneCard[i].number = 'K';break;default :oneCard[i].number = temp+'1';}}printf("洗牌前:\n");display();//将扑克打乱顺序srand(time(0));for(i=0; i<52; i++){//任意交换52次达到洗牌的目的random = rand()%52;tempCard = oneCard[random];oneCard[random] = oneCard[i];oneCard[i] = tempCard;}}void main(){shuffle();printf("洗牌后:\n");display();}
运行结果:
- 游戏算法-洗扑克牌
- 洗扑克牌算法
- 【游戏中的算法】洗扑克牌算法
- 算法 洗扑克牌(乱数排列)
- 程序模拟洗扑克牌(算法)
- 洗扑克牌
- 扑克牌 洗牌算法
- 关于扑克牌的算法
- 扑克牌洗牌算法
- 扑克牌洗牌算法
- Java算法-扑克牌排列
- 德州扑克牌型算法
- 扑克牌逻辑算法
- 算法题/扑克牌顺子
- 52张扑克牌排序算法
- 13张扑克牌排序算法
- 13张扑克牌排序算法
- 算法题目---扑克牌的顺子
- POJ 2349 Arctic Network mst+冒泡排序
- 数据结构的常用排序和稳定性分析
- Java抓取网络图片
- jQuery中关于Ajax的详解
- 快速排序(觉得这样的理解很不错,所以决定转载下)
- 洗扑克牌算法
- 常用网络命令
- mini2440裸机编程--------触摸屏驱动
- Excel-使用技巧-标题设计
- (计算几何8.1.3.1)UVA 10213 How Many Pieces of Land?(使用欧拉公式的应用顶点数+面数-棱数 = 2)
- linux fork 和 vfork
- Android fill_parent、wrap_content和match_parent的区别
- yum
- Linux下Apache不解析PHP(以Ubuntu12.04为例)