2012-12-08 17 views
6

में यादृच्छिकता मैं यादृच्छिक फ्लोट (स्पष्ट रूप से!) प्राप्त करने के लिए random.random() का उपयोग कर रहा हूं। लेकिन मैं वास्तव में ऐसा करना चाहता हूं जैसे कि:पायथन

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

क्या आप लोग इसे मेरी संरचना में मदद कर सकते हैं?

+0

आप वास्तव में क्या करने की कोशिश कर रहे हैं? प्रश्न की अस्पष्टता और नीचे @ hd1 के उत्तर पर यादृच्छिकता की प्रकृति के बारे में अजीब टिप्पणी धागे के बीच, यह काफी अस्पष्ट है। – dkamins

+0

@ डेकैमिन्स, मैंने इसे थोड़ा और स्पष्ट बनाने के लिए पोस्ट संपादित किया, मुझे उम्मीद है। मुझे 30% समय की कार्रवाई करने की ज़रूरत है, अन्यथा, कुछ और करें। बस एक सामान्य एल्गोरिदम की तलाश में। एचडी 1 की पोस्ट यह प्रतीत होती है - मैं इसे स्वीकार करने से पहले इसे थोड़ा और समझने की कोशिश कर रहा हूं। –

+0

यदि आप फ्लोट वैल्यू के रूप में "30%" के बारे में सोच रहे हैं, तो 'hd1' का जवाब स्वीकार करें; यदि आप इसे "10 में से 3" के रूप में सोच रहे हैं, तो ऑस्कर लोपेज़ के उत्तर को स्वीकार करें। वे दोनों सही और समकक्ष हैं, यह केवल एक मामला है जो अधिक पठनीय है या आपके मामले में अधिक "सही" लगता है। – abarnert

उत्तर

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

'यादृच्छिक() irrelephant

+0

लेकिन क्या यह सवाल का उत्तर देता है? पूछताछ इसे बनाना चाहता है ताकि अगर वह बार-बार एक सिक्का फिसलता है, तो यह यादृच्छिक रूप से आदेशित परिणाम देता है, सिर की ओर 40% (या जो कुछ भी) को छोड़ देता है। आपका जवाब संभवतः 0% सिर दे सकता है। – Aerovistae

+0

@ एरोविस्टे ओपी ने केवल एक बार चुनाव करने का सुझाव दिया है, मुझे लगता है। – irrelephant

6

इस प्रयास करें:

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

यहाँ randint 1-10 के बीच एक संख्या उत्पन्न होगा, वहाँ एक 30% संभावना है कि यह 1-3 और एक 70% संभावना है कि यह 4-10 के बीच है के बीच है

+1

@ hd1 की विधि से कम लचीला, क्योंकि यह केवल समान संभावनाएं कर सकता है, लेकिन सुविधाजनक है। ध्यान दें कि यदि आप चाहें तो '== 1' को भी छोड़ सकते हैं। – Dougal

+2

यह एक बेहतर समाधान है जब आपकी संभावनाओं को "1 में 2" या "3 में से 1" के रूप में वर्णित किया जाता है। बेशक एक तर्कसंगत संख्या के लिए, आपके पास इसे किसी भी तरह से वर्णन करने का विकल्प है, इसलिए यदि यादृच्छिक .randrange (10) <3' 'random.random() <.3' के समान ही उचित है; यह सिर्फ एक मामला है जो आपको स्पष्ट लगता है। – abarnert