Chcę wiedzieć, czy istnieje o wiele czystszy sposób na zrobienie tego. Zasadniczo chcę wybrać losowy element z tablicy o zmiennej długości. Normalnie zrobiłbym to w ten sposób:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
Czy jest coś bardziej czytelnego / prostszego do zastąpienia drugiej linii? Czy jest to najlepszy sposób na zrobienie tego. Przypuszczam, że mógłbyś to zrobić myArray.shuffle.first
, ale widziałem #shuffle
kilka minut temu na SO, jeszcze go nie użyłem.
Odpowiedzi:
Po prostu użyj
Array#sample
:Jest dostępny w Ruby 1.9.1+. Aby móc go używać z wcześniejszą wersją Ruby, możesz
require "backports/1.9.1/array/sample"
.Zauważ, że w Ruby 1.8.7 istnieje pod niefortunną nazwą
choice
; zmieniono jego nazwę w późniejszej wersji, więc nie należy jej używać.Chociaż nie jest to przydatne w tym przypadku,
sample
akceptuje argument liczbowy, jeśli chcesz uzyskać wiele różnych próbek.źródło
myArray.sample(x)
może również pomóc ci uzyskać x losowych elementów z tablicy.źródło
zwróci 1 losową wartość.
zwróci również 1 losową wartość.
źródło
Losowa liczba losowych przedmiotów z tablicy
Przykłady możliwych wyników:
źródło
1 +
w innym miejscu.Zwróci losowy element z tablicy.
Jeśli skorzystasz z linii wymienionej poniżej
w niektórych przypadkach zwróci wartość 0 lub zero.
Linia wymieniona poniżej
zawsze zwracaj wartość od 0 do liczby-1.
Jeśli użyjemy
wtedy może zwrócić liczbę, a arr [liczba] nie zawiera elementu.
źródło
źródło