2017-02-09 4 views
0

私は、与えられた確率またはリストからバイナリ結果を生成する必要があるコードを書いています。私はランダムモジュールを見ていますが、問題を解決するものは何も見つかりませんでした。与えられた確率に基づいてバイナリ結果を生成する

RETURN時間の1 30%

RETURN 1 OR 0〜45%、および時間

+0

どの言語で表示されますか? – rici

+0

Python言語 – Hydroxl

答えて

1

均一な生成の55%(0,1)ランダム値が≤かどうかを確認し、それに応じて0または1を返します。 randはU(0,1)発電機であると仮定すると、擬似コードは次のようになります。

function bernoulli(p) { 
    if rand <= p { 
    return 1 
    } else { 
    return 0 
    } 
} 
0

random.choices確かにあなたがやりたいだろうが、それはやり過ぎかもしれません。各要素が独立した周波数を有する有限集合からの選択肢であれば、任意に長いシーケンスを生成することができる。リンクされたPythonドキュメントの例のセクションにおけるその使用の例があります:この例では

>>> # Estimate the probability of getting 5 or more heads from 7 spins 
>>> # of a biased coin that settles on heads 60% of the time. 
>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5 
>>> sum(trial() for i in range(10000))/10000 
0.4169 

、重みは累積分布として指定されている:

cum_weights=(0.60, 1.00) 

等価コール個々の重みを使用してあなたの例のように、

weights=(0.60, 0.40) 

Qの値を加算する必要はありません。彼らは正規化されます。

関連する問題