Kotlin список случайных различных чисел

#list #kotlin

#Список #kotlin

Вопрос:

Я создаю список случайных чисел, используя следующий подход

 val randomList = List(4) { Random.nextInt(0, 100) }
  

Однако этот подход не работает, поскольку я хочу избежать повторений

Ответ №1:

Один из способов — перетасовать диапазон и взять столько элементов, сколько вы хотите:

 val randomList = (0..99).shuffled().take(4)
  

Это не так эффективно, если диапазон большой и вам нужно всего несколько чисел.
В этом случае лучше использовать набор, подобный этому:

 val s: MutableSet<Int> = mutableSetOf()
while (s.size < 4) { s.add((0..99).random()) }
val randomList = s.toList()
  

Ответ №2:

Создать:

  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)
    }
  

Ответ №3:

Однострочный подход для получения списка n различных случайных элементов. Random никоим образом не ограничено.

 val list = mutableSetOf<Int>().let { while (it.size() < n) it  = Random.nextInt(0, 100) }.toList()