首先要确定这100个数的范围,比如0-99。
然后抽取随机数,并利用模除限定范围,每当抽取到一个新的数时,同历史数据比较,如果有重复则放弃。 直到抽取到不重复的10个数为止。
示例代码如下:
#include
#include
#include
int main()
{
int a[10]; // 存储结果。
int i, j;
srand(time(NULL));//通过获取时间值来设定随机数种子,以保证每次运行结果不同。
for(i = 0; i < 10; )//注意,第三项留空,因为需要判断每次得到的数值是否重复,如重复则不进行i的自加
{
a[i] = rand()%100; //得到一个0-99中的随机数。
for(j = 0; j < i; j ++)
if(a[j] == a[i])break;//发现重复,结束内循环
if(j == i) i ++;//如果i和j相等,代表内循环是达到条件退出的,即不是通过break,也就是没有重复项。
}
for(i = 0; i < 10; i++) //输出得到的数值。
printf("%d,", a[i]);
printf("\n");
return 0;
}
以下是运行该程序三次分别得到的结果(每行一次),可以看到是实现了所有功能的。
96,84,85,30,29,97,92,51,38,81,
49,42,13,18,24,1,75,91,60,5,
68,16,23,79,17,59,83,82,34,70,
算法:使用srand/rand产生0~99的随机数作为随机选取的数组下标;用一个布尔型数组来判断当前下标是否被使用过;一直到选出10个为止。
例程:
#include
#include
#include
int a[100],b[100],i,j;
int main() {
for(i=0;i<100;i++)a[i]=i; //生成100个不同的数,这里直接用a[i]=i;
srand((unsigned)time(0)); //设置随机种子
for(i=0;i<10;){
j=rand()%100; //随机选取一个0-100内的下标
if(b[j]==0){ //当这个下标的数未被选中时,输出
printf("%d ",a[j]);
b[j]=1;
i++;
}
}
return 0;
}
首先要确定这100个数的范围,比如0-99。
然后抽取随机数,并利用模除限定范围,每当抽取到一个新的数时,同历史数据比较,如果有重复则放弃。
直到抽取到不重复的10个数为止。
示例代码如下:
#include
#include
#include
int main()
{
int a[10]; // 存储结果。
int i, j;
srand(time(NULL));//通过获取时间值来设定随机数种子,以保证每次运行结果不同。
for(i = 0; i < 10; )//注意,第三项留空,因为需要判断每次得到的数值是否重复,如重复则不进行i的自加
{
a[i] = rand()%100; //得到一个0-99中的随机数。
for(j = 0; j < i; j ++)
if(a[j] == a[i])break;//发现重复,结束内循环
if(j == i) i ++;//如果i和j相等,代表内循环是达到条件退出的,即不是通过break,也就是没有重复项。
}
for(i = 0; i < 10; i++) //输出得到的数值。
printf("%d,", a[i]);
printf("\n");
return 0;
}
以下是运行该程序三次分别得到的结果(每行一次),可以看到是实现了所有功能的。
96,84,85,30,29,97,92,51,38,81,
49,42,13,18,24,1,75,91,60,5,
68,16,23,79,17,59,83,82,34,70,
#include
#include
#include
int main(int argc, char* argv[])
{
int count=100;
srand((unsigned)time(0));
for(int i=0; i<10; ++i)
{
printf("%d\n",(1+(int)(count*(double)rand()/RAND_MAX+1)));
}
return 0;
}
//嗯是有重复了.回去研究了一下.重写了.我测试了一下.有时候还会有重复了.
#include
#include
#include
int main(void)
{
int a[100]={0};
time_t t;
srand((unsigned)time(&t));
for(int i=0;i<10;++i)
{
a[i]=rand()%100;
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
int cnt=0;
for(cnt=0;cnt<10;cnt++)
{
i=rand();
printf(i);
}
大概就是这样了,剩下的自己完成吧。
解答完毕。。。