Estoy creando una lista de números aleatorios usando el siguiente enfoque
val randomList = List(4) { Random.nextInt(0, 100) }Sin embargo, este enfoque no funciona porque quiero evitar repeticiones.
Una forma es barajar un rango y tomar tantos elementos como quieras:
val randomList = (0..99).shuffled().take(4) Esto no es tan eficiente si el rango es grande y solo necesita unos pocos números.
En este caso es mejor usar un Set como este:
val s: MutableSet<Int> = mutableSetOf() while (s.size < 4) { s.add((0..99).random()) } val randomList = s.toList()Crear:
val list = (0 until 100).toMutableList() val randList = mutableListOf<Int>() for (i in 0 until 4) { val uniqueRand = list.random() randList.add(uniqueRand) list.remove(uniqueRand) }Enfoque de una línea para obtener una lista de n elementos aleatorios distintos. Random no está limitado de ninguna manera.
val list = mutableSetOf<Int>().let { while (it.size() < n) it += Random.nextInt(0, 100) }.toList()