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


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.