【发布时间】:2019-09-14 08:33:26
【问题描述】:
我知道rand() 和srand() 是如何相互关联的,我知道我应该如何使用它们,但是它们的工作机制对我来说真的很有趣,我想知道它们是如何工作的 ?!,但我找不到任何特别的东西。
所以这是我的问题:rand() 和 srand() 的深处发生了什么,它是如何产生随机数的? (如果它真的产生一个随机的!)它有任何特殊的数学计算或任何特殊的算法吗?这是什么?
【问题讨论】:
-
Rand 是实现定义的,尽管它通常实现为线性同余生成器。但是,可以在标准
标头中找到定义明确的生成器。并且可能更值得一看,因为众所周知 rand通常会产生低质量的随机数。 -
如果你想知道“它们是如何工作的?!”看看你的标准库实现
-
参见stackoverflow.com/questions/24005459/… 了解标准的内容以及大多数实现的作用。准备好大失所望。
-
@George -- 有点超技术,但
rand()的实现是特定于实现的,而不是特定于实现的。在 C 和 C++ 标准中,“定义的实现”意味着符合标准的实现必须记录它所做的事情。rand()不需要。
标签: c++ random random-seed