洗牌算法

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

// xipai.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;
#define N 54


int 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;
}



 

你可能感兴趣的:(算法,System)