Как я могу поменять случайный индекс из списка в Scala? - PullRequest
0 голосов
/ 12 ноября 2019

Я знаю, как это сделать, когда вы знаете, какие значения поменять местами

val li: List[Int] = List(1.1,2.2,3.1, 1.11, 2.1)

li.updated(0,li(2)).updated(2,li(0))

Но как насчет того, если вы хотите полностью поменять 2 случайных индекса, как бы вы это сделали ??

1 Ответ

0 голосов
/ 12 ноября 2019
val li: List[Double] = List( . . )

val x = util.Random.nextInt(li.length)
val y = util.Random.nextInt(li.length)

li.updated(x,li(y)).updated(y,li(x))

Примечание: при x == y может не произойти своп, но это все еще безопасно, даже для небольших List.

...