2012-02-15 30 views
2

之間的值,我有某事像這樣:蟒蛇,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,看看你是否可以解決問題。 – 2012-02-15 12:49:53

+3

我的意思是儘可能最好的方式,但你可以想象,在問這裏的問題後,你會開始理解一些關於什麼構成了一個關於stackoverflow的好問題,以及如何表達一個問題以便回答問題可以很容易地理解你在問什麼,並給你一個相關的答案。我會要求你閱讀這個評論,然後立即重新閱讀你的問題,然後想想如何編輯它,這樣別人可以得到你所問的關於最隱祕的想法。 – talonmies 2012-02-15 12:53:32

+0

@talonmies:我試着寫得儘可能好。但這並非總是可能的(出於多種原因)。但是,有些人似乎明白我想問什麼。我想我是「清楚的」。返回「(空或全),概率爲myprob」。或許你誤會了我的意思,因爲我在代碼中有這個意思嗎?當然,在你的意見之後,我會努力做得更好!沒有任何硬性的感覺,請始終糾正我的問題,我的代碼等 – George 2012-02-15 13:20:27

回答

4

表達

numpy.random.random() < myprob 

將評估爲True概率myprob。由於FalseTrue解釋爲整數的01,您可以使用

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

與給定的概率兩個給定值之間進行選擇。對於您的特定值emptyfull,第一個表達式基本上會做同樣的事情 - 如果emptyfull分別不是01,則只需要第二個表達式。

+0

:謝謝,就是這樣。 – George 2012-02-15 13:16:02

+0

如果numpy.random.random() James 2012-02-15 13:49:57

+0

@詹姆斯:謝謝。我想用空的和滿的概率進行選擇。 – George 2012-02-15 15:06:15

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

:謝謝你的回答。我選擇了另一個,因爲它具有[empty,full] [numpy.random.random() George 2012-02-15 13:15:48