फ्लोट श्रेणी के बीच एक यादृच्छिक संख्या कैसे प्राप्त करें?


414

randrange(start, stop)केवल पूर्णांक तर्क देता है। तो मुझे दो फ्लोट मानों के बीच एक यादृच्छिक संख्या कैसे मिलेगी?


2
यदि आप इसे बहुत चाहते थे np.random.uniform(start, stop)या np.random.uniform(start, stop, samples)यदि आप कई नमूने चाहते थे। अन्यथा नीचे उत्तर सर्वश्रेष्ठ हैं।
साचिन्रुक

जवाबों:


650

यादृच्छिक का प्रयोग करें। वर्दी (ए, बी) :

>>> random.uniform(1.5, 1.9)
1.8733202628557872

4
यह सैद्धांतिक रूप से 1.5 और 1.9 का उत्पादन कर सकता है? या क्या यह केवल 1.50 ~ 1 और 1.89 ~ का उत्पादन करेगा?
Musixauce3000

14
@ Musixauce3000 लघु उत्तर: हाँ। लंबे समय तक जवाब: आप प्रलेखन यह कहा गया को देखें, तो Returns a random floating point number N such that a <= N <= b for a <= b and b <= N <= a for b < aदूसरे शब्दों में उत्पादन Nया तो इनपुट के बराबर कर सकते हैं aऔर b। इस मामले में 1.5और 1.9
दान

क्या .uniformफ़ंक्शन का उपयोग किए बिना ऐसा करने का एक और तरीका है , लेकिन इसके बजाय .randomया तो randrange?
डेरेकएक्सएक्स

1
@DerryckDX 1.5 + random.random() * (1.9 - 1.5)को इसे करना चाहिए, भले ही चश्मे के अनुसार यह कभी 1.9भी ठीक नहीं लौटेगा (सिद्धांत में भी)।
योनातन एन

@ Musixauce3000 यह लगता है uniform(a, b)के रूप में कार्यान्वित किया जाता है a + (b-a) * random()और रिटर्न ) रेंज [क, ख या [क, ख] में एक यादृच्छिक संख्या गोलाई के आधार पर github.com/python/cpython/blob/...
पावेल

74

random.uniform(a, b)वही दिखता है जो आपकी तलाश है। डॉक्स से:

एक यादृच्छिक फ़्लोटिंग पॉइंट नंबर N को ऐसे लौटाएँ कि <= N <= b के लिए <= b और b <= N <= a <a a के लिए।

देखें यहाँ


47

यदि आप बिंदु के दाईं ओर एन अंकों के साथ एक यादृच्छिक फ्लोट उत्पन्न करना चाहते हैं, तो आप यह कर सकते हैं:

round(random.uniform(1,2), N)

दूसरा तर्क दशमलव की संख्या है।


मुझे नहीं पता कि यह अधिक अपवित्र क्यों नहीं है, अन्य में गोलाई तंत्र नहीं था।
theTechRobo36414519

2

सबसे अधिक, आप उपयोग करेंगे:

import random
random.uniform(a, b) # range [a, b) or [a, b] depending on floating-point rounding

यदि आपको ज़रूरत है तो पायथन अन्य वितरण प्रदान करता है।

यदि आपने पहले से numpyआयात किया है, तो आप इसके समकक्ष उपयोग कर सकते हैं:

import numpy as np
np.random.uniform(a, b) # range [a, b)

फिर, यदि आपको एक और वितरण की आवश्यकता है, तो numpyअजगर के समान वितरण प्रदान करता है, साथ ही साथ कई अतिरिक्त भी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.