2015-01-31 26 views
1

我正在通过一个可用于多个操作系统的c程序进行查看,并针对完全相同的数据在平台间产生不一致的结果。因为我缺乏一些库来编译和调试我的系统。第一次调用rand()没有种子() - >相同的数字?

我注意到它在初始化时调用rand()而不调用srand(),可能是因为它只需要一个随机值。 现在,我想知道rand()在这种情况下的行为如何?它是否需要随机库的操作系统初始值? 我目前希望这可以解释每个平台的不同结果,但是我缺乏rand()的背景知识,以及如果在没有srand()的情况下调用它,会发生什么。

如果它总是返回操作系统的默认初始值,它将解释为什么不同的平台产生不同的结果。

Thx任何输入和抱歉的理论问题 - 无代码^^。

+5

'rand()'没有精确指定。该算法因平台而异,即使使用相同的种子。 – EOF 2015-01-31 18:19:49

回答

2

rand()的手册页:

如果没有提供种子值时,rand()函数是自动 与1

因此,一个值接种,在给定系统它总会给你相同的顺序。但是,即使种子相同,不同的平台也可以实现不同的随机生成器,从而产生不同的序列。

相关问题