多次循环调用srand出现相同数

自定义随机筛选函数fun();循环调用出现相同数,请问是那个地方出的问题,怎么解决,谢谢!
源码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>

void fun() //随机选出10个1~100的随机数
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
printf("%d\t",rand()%100+1);
}
}

void main()
{
int i;
int a;
printf("Please input the numbers that you want you execute:\ni = ");
scanf("%d",&i);
for(a=0;a<i;a++)
{
printf("%d.",a+1);
fun();
}
getch();
}

不胜感激!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
void fun(int n){ //随机选出n个1~100的随机数
    int i;
    for(i = 0;i < n;i++)
        printf("%5d",rand()%100 + 1);
    printf("\n");
}
 
int main() {
    int i,n;
    printf("Please input the numbers that you want you execute:\nn = ");
    scanf("%d",&n);
    srand((unsigned)time(NULL));
    for(i = 0;i < n;++i) {
        printf("%2d.",i + 1);
        fun(i + 1);
    }
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-02
srand(种子) 如果种子一样。那么每次的随机的值都是一样的。
time(NULL) 返回公元1 9 7 0年1月1日0 0 : 0 0 : 0 0以来经过的秒数。
我想你这程序也跑不到1秒。
所以种子是一样的。所以随机数是从同一个开始的。

修改,在main函数中调用srand(time(0)),fun中不调用。追问

可以输出不同的数了,谢谢!
”time(NULL) 返回公元1 9 7 0年1月1日0 0 : 0 0 : 0 0以来经过的秒数“是什么意思啊?

追答

time(0)返回值是一个很大的秒数。就是从公元1 9 7 0年1月1日0 0 : 0 0 : 0 0到现在经历了多少秒。
可以把他换算成年月日时分秒

本回答被提问者采纳
相似回答