Quiero saber si hay una forma mucho más limpia de hacer esto. Básicamente, quiero elegir un elemento aleatorio de una matriz de longitud variable. Normalmente, lo haría así:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
¿Hay algo que sea más legible / más simple para reemplazar la segunda línea? ¿O es esa la mejor manera de hacerlo? Supongo que podrías hacerlo myArray.shuffle.first
, pero solo lo vi #shuffle
hace unos minutos en SO, en realidad aún no lo he usado.
Respuestas:
Solo usa
Array#sample
:Está disponible en Ruby 1.9.1+. Para poder usarlo con una versión anterior de Ruby, podría hacerlo
require "backports/1.9.1/array/sample"
.Tenga en cuenta que en Ruby 1.8.7 existe bajo el nombre desafortunado
choice
; fue renombrado en una versión posterior, por lo que no debe usar eso.Aunque no es útil en este caso,
sample
acepta un argumento numérico en caso de que desee varias muestras distintas.fuente
myArray.sample(x)
También puede ayudarlo a obtener x elementos aleatorios de la matriz.fuente
devolverá 1 valor aleatorio.
también devolverá 1 valor aleatorio.
fuente
Número aleatorio de elementos aleatorios de una matriz
Ejemplos de posibles resultados:
fuente
1 +
en un lugar diferente.Esto devolverá un elemento aleatorio de la matriz.
Si va a utilizar la línea mencionada a continuación
entonces en algunos casos devolverá 0 o valor nulo.
La línea mencionada abajo
siempre devuelve el valor de 0 a número-1.
Si usamos
entonces puede devolver un número y arr [número] no contiene ningún elemento.
fuente
fuente