1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言中连续调用rand函数 返回值不变

C语言中连续调用rand函数 返回值不变

时间:2021-12-23 08:50:16

相关推荐

C语言中连续调用rand函数 返回值不变

C语言中连续调用rand函数,返回值不变

最近用C语言随机函数编程发现了一个奇怪的现象:

简易版代码:

#include<stdio.h>#include<stdlib.h>#include<time.h>int test1(){srand((unsigned)time(NULL));int n;n=rand()%100;return n;}int main(){int i;for(i=0;i<10;i++){printf("%d ",test1());}printf("\n");}

代码通俗易懂不做解释,代码效果展示如下:

奇怪的事情发生了,rand函数10次调用的返回值竟然是一样的。

修改代码:

然而这次,代码效果貌似正常了一些:

上网搜索原因,说是因为time(NULL)是返回当前秒数,由于程序调用时间很短,time(NULL)值没有变,所以rand()使用的种子是不变的,因此每次初次调用返回值是不变的。经过检验,这种说法合理

展示代码如下:

#include<stdio.h>#include<stdlib.h>#include<time.h>int test1(){srand((unsigned)time(NULL));printf("%d ",time(NULL)); //插入这一句int n;n=rand()%100;return n;}int main(){int i;for(i=0;i<10;i++){printf("%d \n",test1());}printf("\n");}

代码效果展示:

原来是time(NULL)在搞鬼,所以为了程序运行的安全性和可靠性,srand()函数还是在main函数中调用比较保险。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。