gpt4 book ai didi

math - 创建一个随机序列,跳到序列的任何部分

转载 作者:行者123 更新时间:2023-12-01 13:06:30 25 4
gpt4 key购买 nike

在 Linux 中。有一个 srand() 函数,您在其中提供一个种子,它将保证在随后对 random() 函数的后续调用中使用相同的伪随机数序列。

比方说,我想通过记住这个种子值来存储这个伪随机序列。

此外,假设我稍后想要这个伪随机序列中的第 100 个数字。

一种方法是使用 srand() 提供种子编号,然后调用 random() 10 万次,并记住这个编号。

有没有更好的办法跳过伪随机列表中的所有其他99,999个数字,直接得到列表中的第100个数字。

谢谢,

最佳答案

我不确定在任何平台上是否存在用于实现 rand 的定义标准;然而,从 GNU Scientific Library 中挑选这个:

— Generator: gsl_rng_rand

This is the BSD rand generator. Its sequence is

xn+1 = (a xn + c) mod m

with a = 1103515245, c = 12345 and m = 231. The seed specifies the initial value, x1. The period of this generator is 231, and it uses 1 word of storage per generator.

所以要“知道”xn 需要您知道 xn-1。除非我遗漏了一些明显的模式,否则你不能在不计算它之前的所有值的情况下跳转到一个值。 (但不一定是每个 rand 实现的情况。)

如果我们从 x1...开始

  • x2 = (a * x1 + c) % m
  • x3 = (a * ((a * x1 + c) % m) + c) % m
  • x4 = (a * ((a * ((a * x1 + c) % m) + c) % m) + c) % m
  • x5 = (a * (a * ((a * ((a * x1 + c) % m) + c) % m) + c ) % m) + c) % m

它很快就会失控。该功能是否易于简化?我不这么认为。

(有一个序列的统计短语,其中 xn 取决于 xn-1 -- 谁能提醒我这个词是什么?)

关于math - 创建一个随机序列,跳到序列的任何部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com