经典洗牌算法C语言实现
这种洗牌方式的算法:
1:初始化一个长度为54的数组,和54张牌。
2:从i=1开始到54,每次从剩余的牌堆中随机抽一张牌放到数组的i下标下。
这样我们可以用一个数组做也可以用两个数组做。
就和经典的选择排序一样。
#include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> #include<vector> #include<algorithm> #define POKER_NUM 54 int poker[54]; void iniPoker() { for(int i=0;i<POKER_NUM;i++) { poker[i]=i+1; } } void suffle() { for(int i=0;i<POKER_NUM;i++) { int index=rand()%(POKER_NUM-i)+i; //获取从i~POKER_NUM的一个索引 std::swap(poker[i],poker[index]); //交换 } } void printPoker() { for(int i=0;i<POKER_NUM;i++) { if(i%9==0) printf("\n"); printf("%4d",poker[i]); } } int main() { srand(time(NULL)); iniPoker(); printPoker(); suffle(); printf("\n-------------------------------------------------------------\n"); printPoker(); }