Je veux savoir s'il existe une façon beaucoup plus propre de procéder. Fondamentalement, je veux choisir un élément aléatoire dans un tableau de longueur variable. Normalement, je le ferais comme ceci:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
Y a-t-il quelque chose de plus lisible / plus simple pour remplacer la deuxième ligne? Ou est-ce la meilleure façon de le faire. Je suppose que vous pourriez le faire myArray.shuffle.first
, mais je ne l'ai vu qu'il y #shuffle
a quelques minutes sur SO, je ne l'ai pas encore utilisé.
Réponses:
Utilisez simplement
Array#sample
:Il est disponible dans Ruby 1.9.1+. Pour pouvoir également l'utiliser avec une version antérieure de Ruby, vous pouvez
require "backports/1.9.1/array/sample"
.Notez que dans Ruby 1.8.7, il existe sous le nom malheureux
choice
; il a été renommé dans une version ultérieure, vous ne devez donc pas l'utiliser.Bien qu'il ne soit pas utile dans ce cas,
sample
accepte un argument numérique au cas où vous souhaiteriez un certain nombre d'échantillons distincts.la source
myArray.sample(x)
peut également vous aider à obtenir x éléments aléatoires du tableau.la source
renverra 1 valeur aléatoire.
renverra également 1 valeur aléatoire.
la source
Nombre aléatoire d'éléments aléatoires d'un tableau
Exemples de résultats possibles:
la source
1 +
dans un endroit différent.Cela retournera un élément aléatoire du tableau.
Si vous utilisez la ligne mentionnée ci-dessous
dans certains cas, il renverra 0 ou une valeur nulle.
La ligne mentionnée ci-dessous
renvoie toujours la valeur de 0 au numéro-1.
Si nous utilisons
alors il peut retourner nombre et arr [nombre] ne contient aucun élément.
la source
la source