XorShift
ナビゲーションに移動
検索に移動
XorShift(えっくすおあしふと)とは乱数生成アルゴリズムの1つである。
内容
いきなりだが、コードを書く。
uint32_t xor(void) { static uint32_t y = 2463534242; y = y ^ (y << 13); y = y ^ (y >> 17); return y = y ^ (y << 5); }
Cを知らない人のために説明すると、
- 値と(値を2の13乗倍)のXORを計算する
- 1. で計算した値と(1. で計算した値を2の17乗で割ったもの)のXORを計算する
- 2. で計算した値と(2. で計算した値の2の5乗倍)のXORを計算する
というアルゴリズムである。シード値を設定したい場合はxに大きめの適当な数を入れておく。
特徴
- XorもShiftも一瞬で計算できるので、とても速い。
- それなりに性質の良い乱数が生成できることが知られている。
- メモリの消費量が非常に小さい。
- 上記の5行と実装も非常に小さい
といった理由で、非常にゲームに向いている。[1] メルセンヌ・ツイスタと比べて乱数の品質は少し落ちるが、メルセンヌ・ツイスタと比べてこちらは格段に高速である。
関連項目
- ↑ 平山 尚、ゲームプログラマになる前に覚えておきたい技術 p773