Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
指数分布 (の離散バージョン) に従って、範囲 {0,...,n-1} の整数をサンプリングする良い方法は何ですか? random.expovariate(lambd)0 から正の無限大までの実数を返します。
random.expovariate(lambd)
アップデート。より正確になるようにタイトルを変更しました。
指数分布の離散類似物は幾何分布です。これはNumPyで実装されています:
>>> import numpy as np >>> np.random.geometric(.01, 10) array([ 33, 45, 41, 171, 62, 119, 56, 47, 30, 197])
簡単な答えは次のとおりです。幾何分布から乱数を選択し、mod n を返します。
例: random.geometric(p)%n
P(x) = p(1-p)^x+ p(1-p)^(x+n) + p(1-p)^(x+2n) ....
= p(1-p)^x *(1+(1-p)^n +(1-p)^(2n) ... )
2 番目の部分は、指定された p と n の定数であることに注意してください。最初の部分は幾何学的です。