ध्यान दें कि यह दृष्टिकोण एक दृष्टिकोण से अधिक पक्षपाती और कम कुशल है nextInt
, https://stackoverflow.com/a/738651/360211
इसे पूरा करने के लिए एक मानक पैटर्न है:
Min + (int)(Math.random() * ((Max - Min) + 1))
जावा मठ पुस्तकालय समारोह math.random () रेंज में एक डबल मूल्य उत्पन्न करता है [0,1)
। ध्यान दें कि इस श्रेणी में 1 शामिल नहीं है।
पहले मानों की एक विशिष्ट श्रेणी प्राप्त करने के लिए, आपको उन मानों की श्रेणी के परिमाण से गुणा करना होगा जिन्हें आप कवर करना चाहते हैं।
Math.random() * ( Max - Min )
यह उस श्रेणी में एक मान लौटाता है [0,Max-Min)
, जहाँ 'मैक्स-मिन' शामिल नहीं है।
उदाहरण के लिए, यदि आप चाहें [5,10)
, तो आपको पाँच पूर्णांक मानों को कवर करने की आवश्यकता है ताकि आप उपयोग करें
Math.random() * 5
यह उस श्रेणी में मान लौटाएगा [0,5)
, जहां 5 शामिल नहीं है।
अब आपको इस सीमा को उस सीमा तक स्थानांतरित करना होगा जिसे आप लक्षित कर रहे हैं। आप मिन वैल्यू को जोड़कर ऐसा करते हैं।
Min + (Math.random() * (Max - Min))
अब आपको रेंज में एक मूल्य मिलेगा [Min,Max)
। हमारे उदाहरण के बाद, इसका मतलब है कि [5,10)
:
5 + (Math.random() * (10 - 5))
लेकिन, इसमें अभी भी शामिल नहीं है Max
और आपको एक डबल मूल्य मिल रहा है। Max
मूल्य शामिल करने के लिए , आपको अपने रेंज पैरामीटर में 1 जोड़ने की जरूरत है (Max - Min)
और फिर एक इंट से कास्टिंग करके दशमलव भाग को छोटा करना है। इसके माध्यम से पूरा किया जाता है:
Min + (int)(Math.random() * ((Max - Min) + 1))
आखिर तुमने इसे हासिल कर ही लिया है। सीमा [Min,Max]
में या उदाहरण के अनुसार एक यादृच्छिक पूर्णांक मान [5,10]
:
5 + (int)(Math.random() * ((10 - 5) + 1))