XorShift

提供:APCC
2021年10月29日 (金) 14:04時点におけるRamdos (トーク | 投稿記録)による版 (ページの作成:「'''XorShift'''(えっくすおあしふと)とは乱数生成アルゴリズムの1つである。 ==内容== いきなりだが、コードを書く。 <pre> uint32_t xo…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

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を計算する ②①で計算した値と(①で計算した値を2の17乗で割ったもの)のXORを計算する ③②で計算した値と(②で計算した値の2の5乗倍)のXORを計算する というアルゴリズムである。シード値を設定したい場合はxに大きめの適当な数を入れておく。

特徴

XorもShiftも一瞬で計算できるので、とても速い。またそれなりに性質の良い乱数が生成できる。 またメモリを消費しない。このため非常にゲームに向いている。[1]

関連項目

  1. 平山 尚、ゲームプログラマになる前に覚えておきたい技術 p773