我非常希望能够重复生成相同的伪随机数据集,特别是在调整实验代码时.通过观察我会说,rand()
每次*似乎给出相同的数字序列.
是否可以保证在同一台机器/不同机器/不同架构上重复执行?
*明显对于同一种子.
ken*_*ytm 20
是的,给予该计划相同的环境.根据C标准§7.20.2.2/ 2,
该
srand
函数使用该参数作为后续调用返回的新伪随机数序列的种子rand
.如果srand
随后使用相同的种子值调用,则应重复伪随机数序列.如果rand
在进行任何调用之前调用srand
,则应生成与srand
第一次调用种子值为1 时相同的序列.
当然,这假设它使用相同的实现细节(即相同的机器,同一个库在同一执行期).C标准并没有规定一个标准的随机数生成算法,因此,如果您用一个不同的C标准库的程序,可以得到不同的随机数序列.
如果您需要具有给定种子的可移植且保证随机数序列,请参阅跨平台的一致伪随机数问题.
归档时间: |
|
查看次数: |
2921 次 |
最近记录: |