SIMD-oriented Fast Mersenne Twister とは
SIMD命令を使うように設計されたMersenne Twisterのこと.普通のMersenne Twisterより高速に動作する.3DSのあるゲームソフトで擬似乱数を生成するために使われていたりする
動機
SFMT(SIMD-oriented Fast Mersenne Twister) を使う時はいつもCでプログラムを実装して,それをpythonからsubprocessで呼び出していた.この方法だと使える言語に制限があるAWS Lambda など使えない.
そう思って作ったがこの記事を書くにあたって改めて調べるとバイナリも一緒にアップロードすれば使えるらしい.まあ,バイナリを作ってアップロードするという手間が省けると思うことにする.
すでに作ってる人はいたが sfmt_genrand_real1
しか実装されておらず, sfmt_genrand_uint64
を使いたい自分の要望にはマッチしていなかった.
GitHub - mochizuki-ichiro/pysfmt: SIMD-oriented Fast Mersenne Twister for Python
Cythonの勉強も兼ねて自分で実装することにした.
コード
pypiにもアップロードしたので pip install pysfmt
でインストール出来る
問題点
coverageを計測したかったけど何故かできていない
http://cython.readthedocs.io/en/latest/src/tutorial/profiling_tutorial.html#enabling-coverage-analysis にあるように .coveragerc
に設定を書いたけどダメだった