我发现这个算法适用于 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
是一个临时变量吗?