ネコのために鐘は鳴る

寺院に住み着くパソコ〇好き

(雑記) xorshiftって0出ないよね

疑似乱数生成アルゴリズムの Xorshift を実装してみて思ったんですが、これって何回生成しても0は出てこないですよね。

Xorshift のアルゴリズム元論文見るのが早いです。すごい短いし。解説サイトだとこのページが丁寧。

要約すると、32bit版はこれです。

// unsigned int を符号なし32bitとする
unsigned int seed;

unsigned int Xorshift()
{
    seed ^= (seed << 13);
    seed ^= (seed >> 17);
    seed ^= (seed << 5);
    return seed;
}

で、seedが最初0だったら永遠に0しか出ない。それはseedに0を入れなければいいだけかもしれないが、seedが0以外だと0は出ない。

暗号学とか乱数アルゴリズムとか全然詳しくないんですが、疑似乱数ってそういうものなんですかね?0も乱数列内に含んでほしい時ってどうすればいいんでしょうか。詳しい方いたら教えてほしいです