2016-03-26 7 views
3

ソートされた要素のリストがあります。最初の要素は、最後の要素とは対照的に、優先順位が付けられています。現在、私はrandom.choice(foo)を使用して、私のリストから項目を選択しています。リスト内の最初の項目の優先順位付け(ランダムおよび確率分布)

私が書いているアルゴリズムは、異なる確率分布(上記で説明した)ではるかに効率的です。残念ながら、私はそれを実装する方法がわかりません

答えて

4

geometric distributionを使用することができます。幾何学分布では、より大きな数を得る確率は指数関数的に減少します。いくつかのパラメータを調整することで、優先順位を微調整することができます。上記のスニペットで

import numpy 
pr = 0.5 
x = numpy.random.geometric(pr, 1)[0] 

xはあなたがどこの成功の確率0.5であれば、あなたの最初の成功に遭遇する前に実行する必要がベルヌーイ試行の数に対応します。

一般に、分布がいくつかの数値nを返す確率は、(1-pr)^(n-1)* prに等しい。ここで、prはコード内に見られるパラメータである。

リスト内の要素を選択するためのインデックスとしてx-1(リストは0でインデックス付けされており、x> = 1)を使用する必要があります。値が小さいほど配信から出現する可能性が高くなりますあなたの要件をキャプチャ:)

関連する問題