プールを極力使わない擬似乱数アルゴリズム

弾幕シューティングを作るとき、リプレイをさせる為、ランダム移動系の弾には擬似乱数を使うのだが、弾ひとつひとつにMT法乱数クラスを割り当てたら*1メモリが明らかに足りなくなる。
だって最高1万個のエレメントに対してですよ。MT法10000*4*32 byte ... 泣くしかない。*2

って、事でプールを極力使わない擬似乱数アルゴリズムをソース込みで列挙しようと思うわけだ。
別にC言語標準の線型合同法でもいいんじゃない?ひとつの要素に対して4byteだけだし。いや、ほかにも実装とかアルゴリズムとかあるはずだ。試行錯誤してみよう。

  • 線型合同法
  • well1024a法

書きかけ ・・


乱数参考サイト

*1:一般的なMT法の実装は擬似乱数値をプールする

*2:libBulletMLを使うため、安全策として弾一つ一つに乱数の種を設定しておくからである。普通の実装ならば弾用のMT法乱数オブジェクトひとつで事足りるのだが・・・