2012-05-14 9 views
7

में नकारात्मक यादृच्छिक मूल्य उत्पन्न करने के लिए मैं अजगर जानने के लिए शुरू कर रहा हूँ, मैं एक नकारात्मक और सकारात्मक संख्या में पास करके यादृच्छिक मान उत्पन्न करने की कोशिश। मान लें -1, 1कैसे अजगर

मैं इस अजगर में क्या करना चाहिए?

उत्तर

5
import random 

def r(minimum, maximum): 
    return minimum + (maximum - minimum) * random.random() 

print r(-1, 1) 

संपादित करें: @ San4ez के random.uniform(-1, 1) सही तरीका है।

def uniform(self, a, b): 
    "Get a random number in the range [a, b) or [a, b] depending on rounding." 
    return a + (b-a) * self.random() 
+1

'डीईएफ़ रैंड की तरह कुछ कर सकते हैं(): वापसी 4 # मेला पासा रोल द्वारा उत्पन्न। यादृच्छिक होने की गारंटी। –

+0

बहुत बहुत धन्यवाद। लेकिन मैं इस तरह से नहीं कर सकता। जहां मैं स्क्रिप्ट चलाने के दौरान मान को तर्क के रूप में पास करना चाहता हूं। #!/usr/bin/env python आयात sys, यादृच्छिक आर = sys.argv [1] वाई = sys.argv [2] प्रिंट random.range (y, r) – user1393251

+0

@ user1393251 - आप कर सकते हैं इस तरह से (मेरी 'आर' विधि को सही' random.uniform' जैसा ही कहा जाता है), बस मैं यहां पहिया को पुनर्निर्मित कर रहा हूं ... San4ez का जवाब लें। – eumiro

1

अधिकांश भाषाओं में एक समारोह है कि रेंज में एक यादृच्छिक संख्या वापस आ जाएगी [0 है:

वैसे भी पहिया बदलने की कोई जरूरत नहीं है ..., random.uniform() रूप में कोडित है , 1], जिसे आप अपनी इच्छित सीमा को सुइट करने के लिए कुशलतापूर्वक उपयोग कर सकते हैं। पायथन में, फ़ंक्शन random.random है। तो की श्रेणी के लिए [-1, 1], आप ऐसा कर सकते हैं:

import random 
random_number = random.random() * 2 - 1 

संख्या हम [0, 2], और यह से घटाने पर से की एक श्रृंखला मिल दोगुना करके, हम [मिल - 1 1]।

2

अगर आप integer in a specified range हैं:

print random.randrange(-1, 2) 

तो ऊपरी सीमा शामिल नहीं है यह, range रूप में एक ही सम्मेलन का उपयोग करता है।

random.uniform कुछ इसी तरह अगर आप मान नाव की आवश्यकता है, लेकिन यह not always clear अगर ऊपरी सीमा शामिल है या नहीं