Ce face Random.nextInt
Random.nextInt(1, 7) returnează un număr întreg aleatoriu între 1 (inclus) și 7 (exclus), adică un zar de la 1 la 6. Cu un singur argument, nextInt(10) dă un număr de la 0 la 9. nextBoolean() returnează true sau false cu șanse egale, ca aruncarea unei monede.
Random folosit direct (obiectul implicit, Random.Default) dă rezultate diferite la fiecare rulare. Random(42) creează un generator cu o sămânță (seed) fixă: produce mereu aceeași secvență de numere, ceea ce este util pentru teste și pentru exemplele de mai jos, care afișează același rezultat de fiecare dată.
Pentru o valoare dintr-un interval poți scrie și (1..6).random(), iar pentru un element dintr-o listă lista.random(). Generatorul din kotlin.random nu este potrivit pentru parole sau chei; pentru asta folosește java.security.SecureRandom.
Parametri
| Parametru | Descriere |
|---|---|
seed |
Sămânța generatorului; aceeași sămânță dă aceeași secvență. |
from |
Limita de jos, inclusă (implicit 0). |
until |
Limita de sus, exclusă. |
Ce returnează
nextInt: un Int din interval. nextBoolean: un Boolean.
Exemple
Exemplul 1: Zaruri cu sămânță fixă
Cu Random(42) secvența este aceeași la fiecare rulare. Limita de sus (7) nu apare niciodată.
import kotlin.random.Random
fun main() {
val zar = Random(42)
val aruncari = List(10) { zar.nextInt(1, 7) }
println(aruncari)
println("Suma: ${aruncari.sum()}")
}
Rezultat
[6, 1, 6, 3, 2, 1, 2, 3, 2, 4]
Suma: 30
Exemplul 2: Aceeași sămânță, aceleași numere
Două generatoare cu aceeași sămânță dau exact aceeași secvență; o sămânță diferită dă alta.
import kotlin.random.Random
fun main() {
val a = Random(2025)
val b = Random(2025)
val c = Random(7)
println(List(5) { a.nextInt(100) })
println(List(5) { b.nextInt(100) })
println(List(5) { c.nextInt(100) })
}
Rezultat
[3, 27, 19, 0, 0]
[3, 27, 19, 0, 0]
[86, 89, 23, 66, 57]
Exemplul 3: Aruncarea monedei
Numărăm câte ori a ieșit „cap” din 1000 de aruncări; rezultatul este aproape de jumătate.
import kotlin.random.Random
fun main() {
val moneda = Random(1)
val cap = (1..1000).count { moneda.nextBoolean() }
println("Cap: $cap, pajură: ${1000 - cap}")
}
Rezultat
Cap: 497, pajură: 503
Exemplul 4: Generator fără sămânță
Random.nextInt pe obiectul implicit dă alt rezultat la fiecare rulare, de aceea rezultatul de mai jos este doar un exemplu.
import kotlin.random.Random
fun main() {
val bilet = List(6) { Random.nextInt(1, 50) }
println("Numere loto: $bilet")
}
Rezultat posibil (diferă la fiecare rulare)
Numere loto: [17, 3, 42, 28, 9, 35]
Greșeli frecvente
- Scrii
nextInt(1, 6)pentru un zar. Limita de sus este exclusă, deci 6 nu apare niciodată; scrienextInt(1, 7). - Creezi un
Random(42)nou la fiecare pas al buclei. Primești de fiecare dată același prim număr; creează generatorul o singură dată. - Folosești
Randompentru parole sau coduri de securitate. FoloseșteSecureRandom.
Comenzi înrudite
Random.nextDouble: nextDouble dă un număr zecimal aleatoriu (implicit între 0 și 1), nextLong un întreg Long aleatoriu.Int.until: Construiesc șiruri de numere pentru bucle: until fără capătul de sus, downTo descrescător, step cu pas.IntRange.contains: Lucrul cu un interval a..b: in verifică apartenența, first și last dau capetele, reversed îl inversează.