2010-07-23 12 views
12

संभव डुप्लिकेट:
Java: generating random number in a rangeRandom.nextInt() के लिए अधिकतम और न्यूनतम निर्दिष्ट करें?

मैं एक तार्किक श्रृंखला में एक यादृच्छिक पूर्णांक उत्पन्न करना चाहते हैं। तो, उदाहरण के लिए कहें, मैं एक निश्चित संख्या के साथ एक पासा "रोल" करने के लिए एक प्रोग्राम लिख रहा हूँ।

public int rollDice() { 
    Random generator = new Random(); 
    return generator.nextInt(sides); 
}

अब समस्या यह है कि इस पक्षों और शून्य के बीच मूल्यों वापस आ जाएगी, समावेशी, जो कोई मतलब नहीं है क्योंकि ज्यादातर पासा 6, 9, आदि को 1 से जाना तो मुझे लगता है कि nextInt चाहिए निर्दिष्ट कर सकते हैं कैसे हो जाता है 1 और पक्षों की संख्या के बीच काम करते हैं?

+2

क्या आप केवल वापसी जनरेटर.नेक्स्टआईंट (पक्ष -1) +1 का उपयोग कर सकते हैं? – Kylar

+1

मुझे लगता है कि आपका मतलब जनरेटर.नेक्स्टआईंट (पक्ष) +1 – RickNotFred

+0

हाँ, मेरा बुरा :) मैं हमेशा भूल जाता हूं कि इस मामले में शामिल है 0 <= i Kylar

उत्तर

45

करने के लिए और से एक यादृच्छिक पूर्णांक मूल्य (समान वितरण) के बीच उत्पन्न करने के लिए (सम्मिलित) का उपयोग करें:

from + rndGenerator.nextInt(to - from + 1) 

आपके मामले में (1..sides):

1 + rndGenerator.nextInt(sides) 
संबंधित मुद्दे