Ich möchte wissen, ob es dafür einen viel saubereren Weg gibt. Grundsätzlich möchte ich ein zufälliges Element aus einem Array variabler Länge auswählen. Normalerweise würde ich es so machen:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
Gibt es etwas, das besser lesbar / einfacher ist, um die zweite Zeile zu ersetzen? Oder ist das der beste Weg, es zu tun. Ich nehme an, Sie könnten es tun myArray.shuffle.first
, aber ich habe es erst vor #shuffle
ein paar Minuten auf SO gesehen, ich habe es noch nicht wirklich benutzt.
Antworten:
Verwenden Sie einfach
Array#sample
:Es ist in Ruby 1.9.1+ verfügbar. Um es auch mit einer früheren Version von Ruby verwenden zu können, können Sie
require "backports/1.9.1/array/sample"
.Beachten Sie, dass es in Ruby 1.8.7 unter dem unglücklichen Namen existiert
choice
. Es wurde in einer späteren Version umbenannt, daher sollten Sie es nicht verwenden.Obwohl dies in diesem Fall nicht sinnvoll ist, wird ein
sample
Zahlenargument akzeptiert, falls Sie mehrere unterschiedliche Stichproben wünschen.quelle
myArray.sample(x)
kann Ihnen auch helfen, x zufällige Elemente aus dem Array zu erhalten.quelle
gibt 1 zufälligen Wert zurück.
gibt auch 1 zufälligen Wert zurück.
quelle
Zufällige Anzahl zufälliger Elemente aus einem Array
Beispiele für mögliche Ergebnisse:
quelle
1 +
einem anderen Ort platzieren.Dies gibt ein zufälliges Element aus dem Array zurück.
Wenn Sie die unten genannte Zeile verwenden
In einigen Fällen wird dann der Wert 0 oder Null zurückgegeben.
Die unten erwähnte Zeile
Geben Sie immer den Wert von 0 bis Nummer 1 zurück.
Wenn wir verwenden
dann kann es Nummer zurückgeben und arr [Nummer] enthält kein Element.
quelle
quelle