(雑記) 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も乱数列内に含んでほしい時ってどうすればいいんでしょうか。詳しい方いたら教えてほしいです