C语言编程入门基础学习—完美洗牌算法之面试题

随机必然有重复,所谓“不重复的随机”实际上是洗牌。洗牌算法参考下面:

#include

#include

#include

intd[6];

inti,n,a,b,t;

intc,j;

voidmain() {

srand(time(NULL));

printf("shuffle 0..n-1 demo");

for(n=1;n

printf("_____n=%d_____",n);

j=1;

for(c=1;c

j*=n*2;

for(c=1;c

for(i=0;i

for(i=n;i>0;i--) {/* 打乱0~n-1 */

a=i-1;b=rand()%i;

if(a!=b)

}

printf("%04d:",c);

for(i=0;i

printf("");

}

}

printf("shuffle 1..n demo");

for(n=1;n

printf("_____n=%d_____",n);

j=1;

for(c=1;c

j*=n*2;

for(c=1;c

for(i=1;i

for(i=n;i>1;i--) {/* 打乱1~n */

a=i;b=rand()%i+1;

if(a!=b)

}

printf("%04d:",c);

for(i=1;i

printf("");

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容