scala - repetir - metodo random java
¿Cómo generar una lista de números aleatorios? (3)
Puedes usar la solución de Don o:
Seq.fill(n)(Random.nextInt)
Tenga en cuenta que no necesita crear un nuevo objeto Random
, puede usar el objeto complementario predeterminado Random, como se indicó anteriormente.
Esta podría ser la pregunta de Scala menos importante de la historia, pero me está molestando. ¿Cómo generaría una lista de n número aleatorio? Lo que tengo hasta ahora
def n_rands(n : Int) = {
val r = new scala.util.Random
1 to n map { _ => r.nextInt(100) }
}
Lo cual funciona, pero no se ve muy Scalarific para mí. Estoy abierto a sugerencias.
EDITAR
No porque sea tan relevante como divertido y obvio en retrospectiva, el siguiente parece que funciona:
1 to 20 map r.nextInt
Pero el índice de cada entrada en la lista devuelta es también el límite superior de esa última. El primer número debe ser menor que 1, el segundo menor que 2, y así sucesivamente. Lo ejecuté tres o cuatro veces y noté "Hmmm, el resultado siempre comienza con 0 ..."
Qué tal si:
import util.Random.nextInt
Stream.continually(nextInt(100)).take(10)
con respecto a su EDIT,
nextInt
puede tomar un argumento Int
como un límite superior para el número aleatorio, entonces 1 to 20 map r.nextInt
es lo mismo que 1 to 20 map (i => r.nextInt(i))
, en lugar de un error de compilación más útil .
1 to 20 map (_ => r.nextInt(100))
hace lo que pretendía. Pero es mejor utilizar Seq.fill
ya que representa con mayor precisión lo que estás haciendo.