Ce face MutableList.shuffle
shuffle() schimbă ordinea elementelor din lista existentă la întâmplare. Nu întoarce nimic. Pentru o listă nouă amestecată, cu originalul neschimbat, folosește shuffled().
Cu un generator Random(seed) cu seed fix, amestecarea dă același rezultat la fiecare rulare (util în teste și jocuri cu „nivel salvat”). Fără argument, rezultatul diferă de fiecare dată.
Parametri
| Parametru | Descriere |
|---|---|
random |
Opțional: generatorul de numere aleatorii (kotlin.random.Random). |
Ce returnează
Nimic; lista este amestecată pe loc.
Exemple
Exemplul 1: Amestecarea unui pachet de cărți
Construim pachetul în ordine, apoi îl amestecăm cu un seed fix și împărțim primele 5 cărți.
import kotlin.random.Random
fun main() {
val pachet = mutableListOf<String>()
for (culoare in listOf("♠", "♥")) {
for (valoare in listOf("A", "K", "Q", "J", "10")) pachet.add("$valoare$culoare")
}
pachet.shuffle(Random(3))
println("Mâna: ${pachet.take(5)}")
}
Rezultat
Mâna: [Q♠, K♠, 10♥, J♥, A♥]
Exemplul 2: Același seed, aceeași ordine
Două liste identice amestecate cu același seed ajung în aceeași ordine. Lista amestecată cu alt seed arată diferit.
import kotlin.random.Random
fun main() {
val a = mutableListOf(1, 2, 3, 4, 5, 6)
val b = mutableListOf(1, 2, 3, 4, 5, 6)
val c = mutableListOf(1, 2, 3, 4, 5, 6)
a.shuffle(Random(10))
b.shuffle(Random(10))
c.shuffle(Random(11))
println(a)
println(b)
println(c)
println(a == b)
}
Rezultat
[3, 4, 2, 6, 5, 1]
[3, 4, 2, 6, 5, 1]
[5, 4, 3, 1, 2, 6]
true
Greșeli frecvente
- Scrii
val amestecata = lista.shuffle(): rezultatul esteUnit. Foloseșteshuffled()pentru o listă nouă. - Folosești
java.util.Collections.shufflecu unjava.util.Random: merge, dar în Kotlin e mai simplulista.shuffle(Random(seed))dinkotlin.random.
Comenzi înrudite
Iterable.shuffled: shuffled amestecă elementele într-o listă nouă, iar random alege un element la întâmplare.MutableList.sort: Sortează chiar lista modificabilă (pe loc), crescător, descrescător sau după un câmp; nu întoarce nimic.Iterable.reversed: Întoarce o listă nouă cu elementele în ordine inversă: ultimul devine primul.