16 ビット PRNG 用のこのアルゴリズムを見つけました。x、y、t が何なのかわかりません。私がやりたいことは、16 ビットのシードを使用して、複数のランダムな 16 ビット値を生成することです。
私が正しければ、その Web ページ (以下に引用) に示されている関数は疑似コードにすぎません。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