洗牌算法

来源:互联网 发布:巴西衰落知乎 编辑:程序博客网 时间:2024/04/29 05:21

首先看下如何生成1——10之间的随机数

// xipai.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <time.h>#include <iostream>using namespace std;#define N 54int main(void) {int poker[N + 1];int i, j, tmp, remain;// 初始化阵列 for(i = 1; i <= N; i++)poker[i] = i; srand(time(0));// 洗牌 for(i = 1; i <= N; i++) {j = rand() % 52 + 1;//产生1~52的随机数tmp = poker[i];poker[i] = poker[j]; poker[j] = tmp; }bool wangFlag=false;for(i = 1; i <= N; i++) {// 判断花色 (有四种花色,平均分块)switch((poker[i]-1) / 13) { case 0: printf("黑桃"); break;case 1: printf("红桃"); break;case 2: printf("方片"); break;case 3: printf("梅花"); break;case 4:printf("王");wangFlag=true;break;} // 扑克牌数字 remain = poker[i] % 13;switch(remain) { case 0: printf("K "); break;case 1:if (wangFlag){printf("小");break;wangFlag=false;}else{cout<<" A ";break;}case 2:if (wangFlag){printf("大");break;wangFlag=false;}else{cout<<remain;break;}case 12: printf("Q "); break;case 11: printf("J "); break;default: printf("%d ", remain); break;} cout<<endl;} system("pause");return 0;}



 

原创粉丝点击