2012-02-15 11 views
2

間の確率で値を返すためにどのように私はこのようなSTHを持っている:のpython、scipyのダウンロード - 2つの値

empty=0 
full=1 
burn=2 
myprob=0.7 

if cell==burn: 
    return (empty or full) with probability myprob 

は、どのように私はそれを行うことができますか? ありがとう!

+0

http://docs.python.org/library/randomをご覧になり、何かを手に入れることができるかどうかを確認してください。 –

+3

これは可能な限り素敵な方法でこれを意味しますが、ここで* 87 *の質問をした後で、スタックオーバーフローに関する良い質問を構成するものと質問を表現する方法の両方について少し理解し始めたでしょう。それがあなたが何を求めているのかを簡単に理解し、あなたに関連する答えを与えることができます。私はあなたにこのコメントを読んでからすぐにあなたの質問を読んでほしいと思うかもしれませんし、他の誰かがあなたが尋ねていることをとても気まぐれなアイデアを得ることができるようにそれを編集する方法について考えるかもしれません。 – talonmies

+0

@タロニミーズ:私はできる限り良く書くようにしています。しかし、それはいつも可能ではありません。しかし、いくつかは私が尋ねたいものを理解しているようです。私は "クリア"だったと思います。私はそれをコードの中に入れていたので誤解されるかもしれませんか?あなたのコメントの後で、私はより良くしようとします!難しい気持ちはなく、常に私の質問、私のコードなどについて私に訂正してください。 – George

答えて

4

表現

numpy.random.random() < myprob 

は確率myprobTrueと評価されます。整数として解釈FalseTrue01なので、あなたは、与えられた確率を持つ2つの与えられた値の間で選択することが

[empty, full][numpy.random.random() < myprob] 

を使用することができます。 emptyfullの特定の値の場合、最初の式は基本的に同じです。emptyfullがそれぞれ01でない場合は、2番目の式が必要になります。

+0

:ありがとうございました。 – George

+0

同等の表現は、numpy.random.random()の場合は '完全です。これは私にはもう少しエレガントに見えますが、あなたが反対かもしれません。これは確率 'myprob'で' full'と評価されることに注意してください - あなたが望むのは明らかかどうか分かりません。 – James

+0

@James:ありがとうございます。私は空と完全との間の確率を与えたいと思っています。 – George

1

私は本当にあなたの質問を理解していない。あなたのコードで:

return (empty or full) with probability myprob 

(empty or full) #will always be 1 

だから私つもりだ何をしたいことは何かであると仮定します。回の

0.7 = 70%が倍の 空0.3 = 30%がフル

を返す返しますこれはあなたが望むものである場合、すべてを行う必要がある:

from random import random 
    if cell==burn: 
     return (random() > my_prob) 

random()は0-> 1の間の数を返します。 0/1と異なる値がemptyfullの場合は、ifの条件を追加してください。

+0

:お返事ありがとうございます。私はそれが好きだった[空、完全] [numpy.random.random() George

関連する問題