给定N张扑克牌,设计一个洗牌算法
均匀洗牌即可
方法1:
#include<stdio.h>#include<stdlib.h>#include<time.h>static int num = 54;//num为纸牌数目//随机数发生器,产生[n,m)之间的随机数int getRandNum(int n,int m){if(n==m){return n;}else if(n>m){return -1;}time_t time1;srand(( unsigned int)time(&time1));return rand() % (m - n + 1) + n ;}//方法1void xipai(int i,int j){if(num==0){return;}int temp = getRandNum(i,j);if(temp<0){return;}num--;printf("%d\t",temp);xipai(i,temp-1);xipai(temp+1,j);}int main(){xipai(1,num);return 0;}
方法2:
for(int i = 0; i < N; i++){int j = random(i, n-1);swap(card[i], card[j]);}


浙公网安备 33010602011771号