gpt4 book ai didi

c - 理解这个 16 位 PRNG

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:22 27 4
gpt4 key购买 nike

我找到了 this algorithm对于 16 位 PRNG。我不明白 x、y 和 t 是什么。我想做的是使用 16 位种子生成多个随机 16 位值。

如果我是正确的,该网页中显示的函数(在下面引用)只是伪代码,因为就目前而言,它将始终生成相同的值,因为 x 和 y 是函数的局部变量?

uint16_t rnd_xorshift_32() {
static uint16_t x=1,y=1;
uint16_t t=(x^(x<<5));
x=y;
return y=(y^(y>>1))^(t^(t>>3));
}

如何修改上面的代码以读取全局变量 uint_16_t random(已经预先设置了种子),然后用下一个随机值覆盖它?

编辑:谢谢,我对静态变量的理解已得到纠正。我说 xy 最初设置为种子(在上面的代码中都设置为 1)然后修改是否正确?成为后续的随机值? t 是临时变量吗?

最佳答案

变量 xy 在您暗示的意义上并不是函数真正的“本地”。它们被声明为 static,这意味着虽然它们的范围是函数的局部(它们不能从外部通过名称访问),但它们的生命周期是整个程序的那个。因此它们将在调用之间保留它们的值,这意味着两件事:

  • x 和 y 实际上是 PRNG 状态。
  • 该函数不是线程安全的。

关于c - 理解这个 16 位 PRNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032956/

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