LoginSignup
0
0

More than 3 years have passed since last update.

numpy.random.poisson の実装メモ

Posted at

背景

numpy.random.poission を C/C++ で実装したい.

C++11 であれば標準で poisson 分布が使えるが, 多少再現性が変わってもいいので, 並列で高速に計算したいとかで自前実装がほしい.

実装

random/src/mtrand.pyx にインターフェイスがあります.
実際の実装(random_poisson)は random/src/distributions/distributions.c にあります.

The transformed rejection method for generating Poisson random variables (1993)

と古い文献を参考に実装してあります(マジックナンバーたくさんでわけわからぬ)

ちなみに libcxx の poisson 実装もマジックナンバーだらけです(かつコメントがまったくないのでなにを参考に実装してあるかわからぬ)

gnustl もよくわからぬ実装ですが, 一応参考文献のコメントがあります.

Non-Uniform Random Variates Generation(1986 と古い)

さらなる高みへ(高速生成)

cuRand や rocRAND が参考になるかも(rocRAND はソースコード公開)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0