[英]Understanding this 16-bit PRNG
我发现这个算法适用于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
(它将使用种子预先设置),然后用下一个随机值覆盖它?
编辑 :谢谢,所以我对静态变量的理解已得到纠正。 我是否正确地说x
和y
最初设置为种子(在上面的代码中都是1
)然后被修改成随后的随机值? 而t
是一个临时变量?
在你暗示的意义上,变量x
和y
并不是真正的“本地”函数。 它们被声明为static
,这意味着虽然它们的范围是函数的本地范围 (它们不能通过名称从外部访问),但它们的生命周期是整个程序的生命周期 。 所以他们会在通话之间保留他们的价值观,这意味着两件事:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.