परिचय
Kotlin रैंडम नंबर जेनरेट करने के कई तरीके प्रदान करता है: `Random` क्लास, `random()` एक्सटेंशन, और `shuffled()`।
विधि 1: Random क्लास (सबसे लचीला)
import kotlin.random.Random
fun main() {
// 0 से 29 के बीच 5 रैंडम इंट
val randomInts = List(5) { Random.nextInt(0, 30) }
println("रैंडम इंट्स: $randomInts")
// रैंडम डबल (0.0 से 1.0)
val randomDouble = Random.nextDouble()
println("रैंडम डबल: $randomDouble")
// रैंडम बूलियन
val randomBool = Random.nextBoolean()
println("रैंडम बूल: $randomBool")
// रैंडम लॉन्ग
val randomLong = Random.nextLong(100, 1000)
println("रैंडम लॉन्ग: $randomLong")
// रेंज से रैंडम तत्व
val randomFromRange = (1..100).random()
println("रेंज से रैंडम: $randomFromRange")
}
विधि 2: रेंज पर random() एक्सटेंशन
fun main() {
// Int रेंज
println((1..10).random()) // 1 से 10
println((1..10).random()) // हर बार अलग
// Long रेंज
println(100L..200L random())
// Char रेंज
println(('a'..'z').random()) // रैंडम लोअरकेस अक्षर
// ClosedFloatingPointRange (डबल)
println((0.0..1.0).random()) // 0.0 से 1.0
}
विधि 3: shuffled() - क्रमबद्ध संग्रह से रैंडम चयन
fun main() {
// 0-100 से रैंडम (शफल करके अंतिम लेना)
val random1 = (0..100).shuffled().last()
println("शफल्ड लास्ट: $random1")
// सूची से रैंडम तत्व
val items = listOf("Apple", "Banana", "Cherry", "Date")
val randomItem = items.shuffled().first()
println("रैंडम आइटम: $randomItem")
// एकाधिक रैंडम यूनिक तत्व (नमूनाकरण)
val sample = items.shuffled().take(2)
println("2 रैंडम यूनिक: $sample")
}
विधि 4: ThreadLocalRandom (जावा, उच्च प्रदर्शन)
import java.util.concurrent.ThreadLocalRandom
fun main() {
// बेहतर प्रदर्शन मल्टीथ्रेडेड वातावरण में
val randomInt = ThreadLocalRandom.current().nextInt(1, 101)
println("ThreadLocalRandom: $randomInt")
}
उन्नत: पुनरुत्पादन योग्य रैंडम (सीड के साथ)
import kotlin.random.Random
fun main() {
// समान सीड = समान अनुक्रम
val seededRandom = Random.createRandom(42L)
repeat(3) {
println("सीडेड: ${seededRandom.nextInt(100)}")
}
// आउटपुट हर रन पर समान होगा
}
सुरक्षा-महत्वपूर्ण अनुप्रयोगों के लिए
import java.security.SecureRandom
fun main() {
val secureRandom = SecureRandom()
// क्रिप्टोग्राफिक उपयोग के लिए
val token = ByteArray(32).also { secureRandom.nextBytes(it) }
println("सिक्योर टोकन: ${token.joinToString("")}")
}
सारांश
| विधि | उपयोग का मामला | थ्रेड-सेफ |
|---|---|---|
| Random.nextInt() | सामान्य उद्देश्य | हाँ (आंतरिक सिंक) |
| (range).random() | सरल रेंज-आधारित | हाँ |
| shuffled() | संग्रह से नमूनाकरण | हाँ |
| ThreadLocalRandom | उच्च-प्रदर्शन मल्टीथ्रेडेड | हाँ (थ्रेड-लोकल) |
| SecureRandom | क्रिप्टोग्राफी | हाँ |