2011-10-16 14 views
8

scala.util.Random.nextInt (n: Int): Int के लिए प्रलेखन कहता है "0 (समावेशी) और निर्दिष्ट मूल्य (अनन्य) के बीच एक छद्म यादृच्छिक, समान रूप से वितरित int मान देता है ..." scala.util.Random.nextInt(): Int के लिए यह कहता है "अगला छद्म यादृच्छिक, समान रूप से वितरित int मान ..." , शून्य के बारे में कुछ भी ssaying बिना। क्या मुझे कभी-कभी नकारात्मक मूल्य मिल सकता है?scala.util.Random.nextInt(): Int कभी-कभी नकारात्मक मान वापस कर सकता है?

+0

यह कहां कहता है? मैंने पाया दस्तावेज़ "सभी 2^32 संभावित int मानों को (लगभग) बराबर संभावना" के साथ उत्पादित किया जाता है, जिसका अर्थ है कि ऋणात्मक संख्या सकारात्मक लोगों की तुलना में * अधिक * होने की संभावना है (क्योंकि एक और नकारात्मक संख्या है)। – Malvolio

उत्तर

9

स्पष्ट रूप से, हाँ। यह मेरी पहली कोशिश पर नकारात्मक मूल्य लौटा! :-)

scala> import util.Random 
import util.Random 

scala> Random.nextInt 
res0: Int = -299006430 
+0

उसमें क्या बाधाएं हैं ?! :) –

+0

@ फ़ैबियनवार्नीज़, कल आप मेरी प्राचीन पोस्ट पर टिप्पणी करने की क्या बाधाएं हैं, और मैं एक ही समय में इसी तरह की स्थिति में चल रहा हूं? :) https://twitter.com/missingfaktor/status/914642815854006272 – missingfaktor

+0

मैं थोड़ी सी चिल्लाती हूं टीबीएच! – missingfaktor

12

हां, आप कर सकते हैं (और यह समान वितरण के definition के कारण ठीक है)। इसके अलावा आप इसे लगभग 50% मामलों में प्राप्त करेंगे।

(for(i <- 1 to 100000) yield scala.util.Random.nextInt()).filter(_<0).length 

ने मुझे 49 9 46 के लिए उपज दिया है - यह 50% के करीब है।

+0

औसतन, वास्तव में, * बिल्कुल * 50% मामलों –

+1

@ लुइगी तटस्थ मामलों के बारे में मत भूलना, जब यादृच्छिक मूल्य 0 के बराबर होता है तो तो 4 9, 9% सकारात्मक,% प्रतिशत नकारात्मक संख्या और शून्य के कुछ ही संख्या। –

+0

मैं नहीं भूल गया ... अच्छा, मुझे लगता है कि कोई भी मूल्य समान रूप से संभव है। शायद आप Int.MinValue या कुछ नहीं प्राप्त कर सकते हैं। 2147483648 नकारात्मक, 2147483647 सकारात्मक, और 1 शून्य Int –

2

scala.uti.Random.nextInt(): इंट java.util.Random की एक ही विधि का लाभ उठाता है। और लुइगी के रूप में सीमा इंगित की गई है [Integer.MIN_VAL, Integer.MAX_VAL]। असल में "समान रूप से वितरित int मान" का अर्थ है कि किसी भी प्रकार का int प्रकार वापस करने के लिए संभव है और सिद्धांत में प्रत्येक का एक जैसा होना चाहिए।

7

आप here देख सकते हैं एक अंतर्निहित java.util.Random, जो self के रूप में जाना जाता है के लिए, स्काला के Random सिर्फ प्रतिनिधियों (माइक Harrah उत्तम SXR का उपयोग)।

जैसा कि अन्य ने बताया कि डिफ़ॉल्ट सीमा Integer.MIN_VAL और Integer.MAX_VAL के बीच है, दूसरे शब्दों में, Integer नकारात्मक, जिनमें से कोई भी संभव है।

Random.nextInt(Integer.MAX_VALUE); 

डॉक्स के अनुसार:: समान रूप से

एक कूट-यादृच्छिक रिटर्न,

तुम सिर्फ सकारात्मक सीमा चाहते हैं, आप अतिभारित विधि nextInt कि एक तर्क है, इस तरह लेता है का उपयोग कर सकते (समावेशी) और निर्दिष्ट मूल्य (अनन्य) के बीच वितरित int मान, यादृच्छिक संख्या जेनरेटर अनुक्रम से खींचा गया है।

संबंधित मुद्दे