C中的srand()范围

C中的srand()范围,第1张

概述当你在函数内部调用srand()时,它是否只在该函数内部种子rand()? 这是调用srand()的函数main. int main(){ srand(static_cast<unsigned int>(time(0))); random_number();}void random_number(){ rand();} 使用rand()的函数random_numb 当你在函数内部调用srand()时,它是否只在该函数内部种子rand()?

这是调用srand()的函数main.

int main(){    srand(static_cast<unsigned int>(time(0)));    random_number();}voID random_number(){    rand();}

使用rand()的函数random_number位于调用srand()的位置之外.

所以我的问题是 – 如果你使用srand()种子rand(),你可以在调用srand()的地方之外使用种子rand()吗?包括功能,不同文件等

解决方法 srand实际上是全局的,我们可以看到这一点到 draft C99 standard,我们可以参考C标准,因为C回到C库函数的C标准,它说(强调我的):

The srand function uses the argument as a seed for a new sequence of pseudo-random
numbers to be returned by subsequent calls to rand. If srand is then called with the
same seed value,the sequence of pseudo-random numbers shall be repeated. If rand is
called before any calls to srand have been made,the same sequence shall be generated
as when srand is first called with a seed value of 1.

它不会将其影响限制在它所使用的范围内,它只是说它影响后续调用rand

标准草案中提供的可移植实现的示例使得更明确的是效果是全局的:

static unsigned long int next = 1;voID srand(unsigned int seed){   next = seed;}
总结

以上是内存溢出为你收集整理的C中的srand()范围全部内容,希望文章能够帮你解决C中的srand()范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存