2012-12-08 3 views
6

私はrandom.random()を使用して、ランダムな浮動小数点(明らかに!)を取得しています。しかし、私が本当にやりたいことは、次のようなものです:Pythonのランダム性

there's a 30% chance my app does this: 
    pass 
else: 
    pass 

あなたは私がこの構造を助けることができますか?

+0

あなたは本当に何をしようとしていますか?下の@ hd1の答えのランダム性の性質に関する問題の曖昧さと奇妙なコメントスレッドの間では、それはかなり不明です。 – dkamins

+0

@Dkamins、私はそれをもう少し明確にするために投稿を編集しました。私は時間の30%の行動を実行する必要があります、そうでなければ何かをします。ちょうど一般的なアルゴリズムを探しています。 hd1のポストはそうであるように思えます。私は受け入れる前にちょっとだけ理解しようとしています。 –

+0

浮動小数点値として「30%」を考えている場合は、「hd1」の答えを受け入れます。あなたが「10のうち3」と考えているなら、ÓscarLópezの答えを受け入れてください。彼らはどちらも正しいですし、それと同等です。あなたのケースでは、それはもっと読みやすく、正しいと思われます。 – abarnert

答えて

11
if random.random() > 0.5: 
    # your app does this 
    pass 
else: 
    # your app does that 
    pass 
+5

'random() irrelephant

+0

これは質問に答えますか?質問者は、硬貨を何度も反転させると、ランダムに順序付けられた結果が得られ、頭に向かって40%(または何でも)歪んだようにしたいと考えています。あなたの答えは実現可能な0%の頭を与えることができます。 – Aerovistae

+0

@Aerovistae OPは一度選択するよう提案していたと思います。 – irrelephant

6

これを試してみてください:

if random.randint(1, 10) in (1, 2, 3): 
    print '30% chance' 
else: 
    print '70% chance' 

ここrandintは1〜10までの数字を生成します、それは1-3と、それは4-10の間だと70%の確率の間だと30%の確率があります

+1

@ hd1の方法よりも柔軟性が低いのは、これは等しい確率しかないが便利だからです。必要ならば、 '== 1'をスキップすることもできます。 – Dougal

+2

あなたの確率が「1 in 2」または「1 in 3」と最もよく記述されている場合、これはより良い解決策です。もちろん、有理数の場合は、どちらかを記述するかどうかを選択できるので、 'random.randrange(10)<3'なら' random.random()<.3'と同じくらい妥当です。それはちょうどあなたの方があなたにはっきりと見える問題です。 – abarnert

関連する問題