【发布时间】:2010-05-04 21:41:28
【问题描述】:
在 Linux 中。有一个 srand() 函数,您可以在其中提供一个种子,它将保证在随后对 random() 函数的后续调用中具有相同的伪随机数序列。
比方说,我想通过记住这个种子值来存储这个伪随机序列。
另外,假设我稍后想要这个伪随机序列中的千分之十的数字。
一种方法是使用 srand() 提供种子编号,然后调用 random() 10 万次,并记住该编号。
有没有更好的方法可以跳过伪随机列表中的所有其他 99,999 个数字,直接获取列表中的第 100 个数字。
谢谢,
米
【问题讨论】:
-
请注意
srand种子rand和srandom种子random。 -
我很想知道这背后的用例 - 我想我遗漏了一些东西,因为我不明白为什么第 100,000 个序列比第一个更随机。
-
@HorusKol 已经有一段时间了,但是当对相关的东西感兴趣时通过谷歌结束了这里,我确实想给你一个用例。想象一个游戏,它为您提供一系列谜题,每个谜题都由一个数字生成。为了确保每个人得到不同的谜题,您使用随机生成器并记住初始种子。现在,您可能希望用户能够从他离开的地方继续(此时种子是已知的,这使事情变得更容易),甚至只要他记住它的编号就可以重播任何谜题。
-
(是的,我不得不稍微扩展一下以获得完整的用例。但是,这个想法不是关于“更随机”,而是关于“重新创建”一些“随机”的东西(因此实际上将随机性的伪部分变成了优势)