C语言实现不重复随机序列(源码)
今天有个朋友需要用C语言实现显示0-100的随机序列,并且要大于50的显示1,小于50的显示0。
俺觉得无非就是rand()函数的使用呗,于是抽空写一下实现,本机测试无误。需要的朋友可以直接拷贝运行。
那个向我提问的朋友也可以看看,并提出下一步设计。俺也给出了详细的注释。程序很短,没有考虑性能,仅以实现
为目的。好久没发贴了,估计近期都会少发帖,因为手头的两个网站要快些做。
#include <stdlib.h> //标准工具库,要用到其中的rand()
#include <stdio.h>
#include<conio.h>
#include <time.h> //时间库,要用到里面的时间来做随机数的种子
int main(){
//循环变量
int i;
int j;
int t;
//随机变量
int k;
//数组初始化
int sy[100]={};
for(t=0;t<=100;t++){
sy[t]=t;
}
//获得随机种子
srand(time(NULL));
printf("将0-100的数随机排列,并且大于50的数显示1,小于50的数显示0的程序\n\n");
for(i=0; i<100; i++){
k=rand()%(100-i);
if(sy[k]>50)
printf("%d\n",1);
else
printf("%d\n",0);
//数组中随机位置后的所有数整体前移一位,覆盖该随机数,防止数列重复
for(j=k;j<100;j++)
sy[j]=sy[j+1];
}
getch();
return 0;
}
#include <stdio.h>
#include<conio.h>
#include <time.h> //时间库,要用到里面的时间来做随机数的种子
int main(){
//循环变量
int i;
int j;
int t;
//随机变量
int k;
//数组初始化
int sy[100]={};
for(t=0;t<=100;t++){
sy[t]=t;
}
//获得随机种子
srand(time(NULL));
printf("将0-100的数随机排列,并且大于50的数显示1,小于50的数显示0的程序\n\n");
for(i=0; i<100; i++){
k=rand()%(100-i);
if(sy[k]>50)
printf("%d\n",1);
else
printf("%d\n",0);
//数组中随机位置后的所有数整体前移一位,覆盖该随机数,防止数列重复
for(j=k;j<100;j++)
sy[j]=sy[j+1];
}
getch();
return 0;
}
作者:施杨(施杨's Think out)
出处:http://shiyangxt.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。