scala - numeros - generar datos aleatorios
¿Cómo elegir un elemento aleatorio de una matriz en Scala? (5)
import scala.util.Random
val A = Array("please", "help", "me")
Random.shuffle(A.toList).head
Por ejemplo, hay una matriz Scala val A = Array("please", "help", "me")
. ¿Cómo elegir un elemento aleatorio de esta matriz?
import scala.util.Random
val A = List(1, 2, 3, 4, 5, 6)
A(Random.nextInt(A.size))
import java.util.Random
// ...
val rand = new Random(System.currentTimeMillis())
val random_index = rand.nextInt(A.length)
val result = A(random_index)
Una mejor respuesta que no implica reorganizar la matriz en absoluto sería esta:
import scala.util.Random
object sample {
//gets random element from array
def arr[T](items:Array[T]):T = {
items(Random.nextInt(items.length))
}
}
Esto también funciona genéricamente
También podemos agregar algo de seguridad con la mónada Option
(utilizando la función de lift
y una condición)
En realidad, si usa esta función en Arrays (que podría estar vacía), su resultado siempre será una Opción.
Transparencia Referencial FTW / o /
def getRandElemO[T](arr: Array[T]): Option[T] =
if (arr.isEmpty) None
else arr lift util.Random.nextInt(arr.length)