2010-11-22 11 views
22

मैं इस विधि का उपयोग:मैं ग्रोवी में यादृच्छिक संख्याओं का उपयोग कैसे कर सकता हूं?

def getRandomNumber(int num){ 
    Random random = new Random() 
    return random.getRandomDigits(num) 
} 

जब मैं इसे कहते मैं println getRandomNumber(4)

लिखने लेकिन मुझे एक त्रुटि है

No signature of method: java.util.Random.getRandomDigits() is applicable for argument types: (java.lang.Integer) values: [4] 

नोट: मैं एक ग्रूवी कक्षा में इस विधि का उपयोग और यह काम करता बिना किसी त्रुटि के

उत्तर

41

java.util.Random.getRandomDigits जैसी कोई विधि नहीं है।

एक यादृच्छिक संख्या उपयोग nextInt पाने के लिए:

return random.nextInt(10 ** num) 

इसके अलावा, आप यादृच्छिक वस्तु बनाना चाहिए एक बार जब आपके आवेदन शुरू होता है:

Random random = new Random() 

आप एक नई यादृच्छिक वस्तु नहीं बनाना चाहिए कि हर समय आप एक नया यादृच्छिक संख्या चाहते हैं। ऐसा करने से यादृच्छिकता नष्ट हो जाती है।

+0

धन्यवाद, ध्यान दें: मैंने getRandomDigits() को किसी अन्य ग्रोवी क्लास में उपयोग किया है और यह बिना किसी त्रुटि के ठीक से काम करता है। आप इस विधि के बारे में किसी भी प्रभाव को देख सकते हैं –

+0

'getRandomDigits()' java.util पर मौजूद नहीं है। यादृच्छिक @ मार्क-बार्स ने लिखा है। आप किस वर्ग का जिक्र कर रहे हैं? – youri

12

आम तौर पर, मैं RandomUtils लगता है (से अपाचे कॉमन्स लैंग) की तुलना में java.util.Random

10

यादृच्छिक संख्या उत्पन्न करने के लिए एक आसान तरीका मैं निम्नलिखित का उपयोग करें:

Math.abs(new Random().nextInt() % 600) + 1 

इस के लिए एक सीमा के भीतर एक यादृच्छिक संख्या उत्पन्न होगा आप। इस मामले में 1-600। आप पूर्णांक की सीमा में आवश्यक मूल्य 600 को बदल सकते हैं।

+0

थोड़ा सुधार: Math.abs (नया रैंडम()। अगला INT()% 600) + 1. अन्यथा आप -1 का एक आदर्श परिणाम प्राप्त कर सकते हैं और 0 के सही मान के बजाय 0 के रेंज परिणाम से बाहर हो सकते हैं। –

+0

धन्यवाद । यह अद्यतन किया गया था। – anataliocs

1

उदाहरण के लिए, मान लीजिए कि आप 50 से 60 के बीच यादृच्छिक संख्या बनाना चाहते हैं, तो आप निम्न विधियों में से एक का उपयोग कर सकते हैं। ।

new Random().nextInt()%6 +55 

नई यादृच्छिक() nextInt()% 6 रिटर्न -5 और 5 और जब आप इसे 55 में जोड़ने के लिए आप 50 और 60

दूसरी विधि के बीच मान प्राप्त कर सकते जो मूल्य:

Math.abs(new Random().nextInt()%11) +50 

Math.abs (नई यादृच्छिक()। nextInt()% 11) बाद में आप 50 में जोड़ सकते हैं 0 और 10 के बीच कोई मान बनाता है जो 50 और 60

के बीच कोई मान आप दे देंगे में
संबंधित मुद्दे