简单的洗牌算法
/************************************************************************
实现原理: 产生随机数,交换数组中的值
************************************************************************/
#include "stdafx.h"
/************************************************************************
函数功能: 洗牌算法
参数1: 一副牌的整形数组
参数2: 数组长度
备注: #include <time.h>
#include <stdlib.h>
************************************************************************/
void ChangCard(int aryBuffer[], int Len)
{
int i, nModTemp, nChangeTemp;
//用时间作业参数来初始化随机数种子
srand((unsigned)time(NULL));
for (i = Len; i > 0; i--)
{
nModTemp = rand() % i;
nChangeTemp = aryBuffer[i-1];
aryBuffer[i-1] = aryBuffer[nModTemp];
aryBuffer[nModTemp] = nChangeTemp;
}
}
int main()
{
int aryCartomancy[54] =
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54
};
int i;
//洗牌
ChangCard(aryCartomancy, 54);
//显示一下
for (i = 0; i < 54; i++)
{
printf("%d, ", aryCartomancy[i]);
if (0 == (i+1) % 13)
{
printf("\r\n");
}
}
system("pause");
return 0;
}