रैंडमनेस अराजकता नहीं है: Kotlin कैसे Stack Overflow की समस्या हल करता है
\n\nहर डेवलपर ने कभी न कभी रैंडम नंबर जनरेट करने का कोड लिखा है। लगता है इससे आसान क्या हो सकता है? लेकिन जब यह सवाल Stack Overflow पर पूछा जाता है (और सवाल "How can I get a random number in Kotlin?" हजारों व्यूज इकट्ठा करता है), तो साफ हो जाता है: यहाँ छिपे हुए खतरे हैं, खासकर अगर आप Java या Python से आ रहे हैं।
\n\nइस लेख में हम Kotlin में रैंडम नंबर जनरेट करना सरल से लेकर एडवांस तकनीकों तक कवर करेंगे। आप सीखेंगे कि रैंडम इंटीजर, फ्रैक्शनल नंबर कैसे प्राप्त करें, रेंज कैसे सेट करें और सुरक्षा के लिए क्रिप्टो-स्ट्रॉन्ग रैंडम कैसे जनरेट करें। चलिए शुरू करते हैं!
\n\nबेसिक्स: Kotlin में Random
\n\nKotlin का अपना कोई अलग रैंडम क्लास नहीं है - यह Java के शक्तिशाली java.util.Random का उपयोग करता है, लेकिन कहीं अधिक सुविधाजनक सिंटैक्स के साथ। एक्सटेंशन फंक्शन की बदौलत, Kotlin random कोड सचमुच एक लाइन में लिखा जा सकता है।
सबसे आसान तरीका: Random.nextInt()
\n\nअगर आपको सिर्फ एक रैंडम इंटीजर चाहिए (0 से Int के अधिकतम मान तक), तो इसका उपयोग करें:
\n\nimport kotlin.random.Random\n\nfun main() {\n val randomNumber = Random.nextInt()\n println("रैंडम नंबर: $randomNumber")\n}\n\nहर बार चलाने पर एक नया मान मिलेगा। लेकिन अक्सर हमें रेंज को सीमित करने की आवश्यकता होती है। इसके लिए एक ओवरलोडेड वर्जन है:
\n\nval fromZeroToTen = Random.nextInt(10) // 0..9\nval fromFiveToFifteen = Random.nextInt(5, 15) // 5..14\n\nमहत्वपूर्ण: Kotlin में, Java की तरह, ऊपरी सीमा शामिल नहीं होती। Random.nextInt(10) 0 से 9 तक का नंबर लौटाएगा।\n\nफ्रैक्शनल नंबर: Random.nextDouble() और Random.nextFloat()
\n\nKotlin में रैंडम float या double जनरेट करने के लिए उपयोग करें:
\n\nval randomDouble = Random.nextDouble() // 0.0..1.0\nval randomFloat = Random.nextFloat() // 0.0..1.0\n\n// रेंज के साथ:\nval doubleInRange = Random.nextDouble(10.0, 20.0) // 10.0..20.0\n\nध्यान दें: nextFloat() रेंज को सपोर्ट नहीं करता - केवल nextDouble() करता है। अगर रेंज में float चाहिए, तो कन्वर्ट करें:
val customFloat = Random.nextDouble(1.5, 5.5).toFloat()\n\nरेंज में रैंडम नंबर जनरेट करना: व्यावहारिक उदाहरण
\n\nअक्सर रियल प्रोजेक्ट्स में Kotlin में दिए गए रेंज में रैंडम नंबर की आवश्यकता होती है। आइए सबसे लोकप्रिय स्थितियों को देखें।
\n\n1 से 100 तक रैंडम इंटीजर (दोनों शामिल)
\n\nऊपरी सीमा को शामिल करने के लिए, बस 1 जोड़ें:
\n\nval diceRoll = Random.nextInt(1, 7) // 1..6 (पासे की तरह)\nval lottery = Random.nextInt(1, 101) // 1..100\n\nएरे या लिस्ट का रैंडम इंडेक्स
\n\nसबसे आम कार्यों में से एक है कलेक्शन से रैंडम एलिमेंट प्राप्त करना:
\n\nval colors = listOf("लाल", "नीला", "हरा", "पीला")\nval randomColor = colors[Random.nextInt(colors.size)]\nprintln("रैंडम रंग: $randomColor")\n\nलेकिन Kotlin में इससे भी अधिक सुरुचिपूर्ण तरीका है - random() फंक्शन:
val randomColor = colors.random()\nprintln("रैंडम रंग: $randomColor")\n\nअंदर से यह वही काम करता है, लेकिन कोड साफ हो जाता है।
\n\nस्टेप के साथ रैंडम नंबर
\n\nकभी-कभी ऐसे नंबर जनरेट करने की जरूरत होती है जो किसी विशेष मान के गुणज हों। उदाहरण के लिए, 0 से 100 तक सम संख्याएँ:
\n\nfun randomEven(max: Int): Int {\n val half = max / 2\n return Random.nextInt(0, half + 1) * 2\n}\n\nprintln(randomEven(100)) // 0, 2, 4, ..., 100\n\nएडवांस तकनीकें: सीक्वेंस और क्रिप्टो-स्ट्रॉन्ग रैंडम
\n\nरैंडम नंबरों का सीक्वेंस
\n\nअगर रैंडम नंबरों की लिस्ट जनरेट करनी है, तो generate