第一次调用没有 seed() 的 rand() --> 相同的数字?
First call of rand() without seed() --> same number?
我正在查看可用于多个 OSs 的 c 程序,并且在平台之间针对完全相同的数据产生不一致的结果。寻找是因为我缺少一些库来在我的系统上编译和调试它。
我注意到它在初始化期间调用了 rand() 而没有调用 srand(),可能是因为它只需要 1 个随机值。
现在,我想知道 rand() 在这种情况下的行为如何?它是否采用随机库的操作系统初始值?
我目前希望这可以解释每个平台的不同结果,但我缺乏 rand() 的背景知识以及如果在没有 srand() 的情况下调用它会发生什么。
如果它总是returns OS 的默认初始值,这将解释为什么不同的平台会产生不同的结果。
感谢任何输入,对理论问题感到抱歉 - 没有代码 ^^。
来自 rand()
的联机帮助页:
If no seed value is provided, the rand() function is automatically
seeded with a value of 1.
所以,在给定的系统中,它总是会给你相同的序列。然而,即使种子相同,不同的平台也可能实现不同的随机生成器,从而产生不同的序列。
我正在查看可用于多个 OSs 的 c 程序,并且在平台之间针对完全相同的数据产生不一致的结果。寻找是因为我缺少一些库来在我的系统上编译和调试它。
我注意到它在初始化期间调用了 rand() 而没有调用 srand(),可能是因为它只需要 1 个随机值。 现在,我想知道 rand() 在这种情况下的行为如何?它是否采用随机库的操作系统初始值? 我目前希望这可以解释每个平台的不同结果,但我缺乏 rand() 的背景知识以及如果在没有 srand() 的情况下调用它会发生什么。
如果它总是returns OS 的默认初始值,这将解释为什么不同的平台会产生不同的结果。
感谢任何输入,对理论问题感到抱歉 - 没有代码 ^^。
来自 rand()
的联机帮助页:
If no seed value is provided, the rand() function is automatically seeded with a value of 1.
所以,在给定的系统中,它总是会给你相同的序列。然而,即使种子相同,不同的平台也可能实现不同的随机生成器,从而产生不同的序列。