Die Programmiersprache Ruby

Blog| Forum| Wiki  

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.