【发布时间】:2020-12-08 16:49:35
【问题描述】:
如果我在main 函数中调用srand,是否也会影响我在其他翻译单元中的函数的结果?
【问题讨论】:
-
它会影响由多个翻译单元构建的执行程序。:)
-
@VladfromMoscow 你能把它作为答案发布吗?
-
srand由库提供,并与可执行文件(更具体地说,正在运行的可执行文件的一个实例,即进程)链接。可执行文件不区分不同的源文件/翻译单元。它将影响将来在可执行文件中对rand的所有调用,无论函数调用它(main或其他)。但是,它不会影响不同的进程。因此,在一个进程中调用srand不会影响父进程或兄弟进程。它将影响随后产生的孩子。 -
取决于实现。该标准仅要求使用相同种子生成的数字序列每次都相同...
return 4;是rand()的有效(尽管质量非常低)实现@ --- mandatory xkcd --- 如果您将线程添加到组合中,然后所有赌注都关闭了! -
@pmg 还有mandatory Dilbert.