Aus den Einzeilern: Eine Methode, um ein Array nach Zufall neu zu ordnen:
1
2
3
4
5
|
class Array
def shuffle
sort_by { rand }
end
end |
Mit folgendem Code kann man sich davon überzeugen, dass die Methode korrekt arbeitet (zum Testen an den Code anfügen):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# Testarray mit den Werten 1 bis 20 erstellen
a = Array(1..20)
# count-Hash: Zählt, wie oft eine Zahl nach shuffle als erstes Element auftaucht
count = Hash.new 0
1000.times do
count[a.shuffle.first] += 1
end
# Ergebnis ausgeben als kleines ASCII-Balkendiagramm
puts 'Nummer: Anzahl Auftreten als erstes Element im shuffled Array'
for k, c in count.sort
puts '%d: %s' % [k, '*' * c]
end |
Wenn man das Script ein paarmal startet, sieht man, dass die Balken kein Muster haben; die Ergebnisse sind also zufällig.