Thread Bingokarten erstellen (11 answers)
Opened by frankes at 2010-09-27 22:19

payx
 2010-09-29 12:17
#141558 #141558
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo clms,
und hallo frankes,

2010-09-28T22:45:17 clms
Mit shuffle() aus CPAN:List::Util kann man eine Liste in eine zufällige Reihenfolge bringen.

shuffle() ist elegant, das kannte ich noch nicht, danke für den Hinweis. (Allerdings kann man es wohl eher selten brauchen, denke ich.)

2010-09-28T22:45:17 clms
Und bei der Erzeugung des Keys würde ich die einzelnen Begriffe sicherheitshalber durch ein Zeichen trennen, das garantiert in keinem der Begriffe vorkommt, z.B. '|' oder ' '.

Da ich den Key aus den Arrayindices erzeuge und das Array lt. Vorgabe genau 10 Stellen hat, macht mein Key keine Probleme.

2010-09-28T22:45:17 clms
Noch was - die Anzahl der gewünschten Kärtchen sollte deutlich kleiner als die Zahl möglicher Kombinationen sein, sonst wird die while-Schleife ineffizient.

Ja, darauf hatte ich auch schon hingewiesen.

Im Ergebnis macht Dein (schlankerer) Code ja nichts anderes als meiner, d.h. frankes' Wunsch, dass durch das Programm eine gleichmäßige Verteilung (Häufigkeit) der zehn Elemente sichergestellt werde, ist auch bei Dir nicht erfüllt.

Der Vorschlag von frankes, für jedes Element eine bestimmte Häufigkeit vorzugeben (z.B. bei zehn Kärtchen wäre die Häufigkeit für jedes Element auf sechs zu beschränken), funktioniert nicht zuverlässig, wenn wie in unseren Entwürfen die Kärtchen nach dem Zufallsprinzip erstellt werden, denn denkbar wäre sonst folgender Fall (Keys wie in meinem Codebeispiel aus Arrayindices):

1. 012345
2. 012346
3. 012347
4. 012348
5. 012349
6. 012356
# 0, 1, 2 und 3 dürfen jetzt nicht mehr verwendet werden.
7. 456789
# Keine weiteren Kombinationen mehr möglich!


Wenn es wirklich nur um die Erzeugung von Spielkarten geht, kann man sich meiner Einschätzung nach ruhig darauf verlassen, dass der Zufall bei einer nicht zu geringen Zahl von Kärtchen schon für eine brauchbare Verteilung sorgen wird.

Wenn es aber ums Prinzip geht, müssten wohl zunächst systematisch (ohne Zufall) die Kombinationen zusammengestellt werden, und dann erst beim Erzeugen der Kärtchen die Reihenfolge der Elemente pro Kärtchen (und ggf. die Reihenfolge der Kärtchen selbst) geshufflet werden.

Grüße
payx

View full thread Bingokarten erstellen