C语言中100个数中随机选取10个不同的数如何实现?
首先要确定这100个数的范围,比如0-99。
然后抽取随机数,并利用模除限定范围,每当抽取到一个新的数时,同历史数据比较,如果有重复则放弃。 直到抽取到不重复的10个数为止。
示例代码如下:
#include stdio.h
#include stdlib.h
#include time.h
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,
C语言怎么做个抽签程序,就是老师要用这程序来随即抽取学号来回答问题, 56个人,随即抽一人回答问题的代码
#includestdio.h
#includestdlib.h
#includetime.h
void main()
{
int num;
time_t t;
srand((unsigned)time(t)); //获取当前时间作为种子,保证每次产生随机数的种子不同
num=random(60); //用函数random在0-60之间产生一个随机数
printf(“num=%d”,num);
}
希望回答对你有帮助!
【原创答人】
在c语言中如何实现:在元素组中随机抽取几个元素?
弄一个数组,用某种规则的数据把它填满。然后库函数rand生成下标范围内的随机数,以此随机数为下标取得数组中的数据即可。