Lotto 6 aus 49

Aus ProgrammingWiki
Archivierte Version vom 2014-08-14T07:40:51+00:00. Aktuelle Version

Inhaltsverzeichnis

Lotto_Ziehungsgeraet1.jpg
Ziehungsgerät zum Lotto 6 aus 49

Autor: Berger, Veit

Vorüberlegungen

In einer beliebigen Anzahl sollen Lottoziehungen 6 aus 49 simuliert werden.
Zunächst ist es kein Problem, Zufallszahlen zwischen 1 und 49 zu bestimmen (s. Prozeduren mit Zeichenketten und Listen).
Wir sollten aber daran denken, dass diese Zahlen in einer korrekten Lottoziehung paarweise verschieden sein müssen.

Algorithmus

Wir wollen uns für eine endständig rekursive Problemlösung entscheiden, in der wir eine Liste mit korrekten Lottozahlen im rekursiven Abstieg einer entsprechenden Prozedur bilden. Mit einer Zählvariablen steuern wir den Ablauf:

  • Falls der Zähler Null ist, gib die vollständige Liste einer Lottoziehung zurück.
  • Anderenfalls lege eine Zufallszahl zwischen 1 und 49 fest.
  • Prüfe, ob sie bereits Element der aktuellen Teilziehung ist.
  • Trifft dieser Fall zu, wiederhole die Ziehung bei unverändertem Zählerstand.
  • Anderenfalls füge die Zufallszahl zur Teilziehung hinzu und führe die Ziehung bei dem um 1 verminderten Zähler fort.

Implementation

Um eine aufsteigend sortierte Lottoziehung zu ermitteln, modifizieren wir den Listen-Konstruktor cons geringfügig zu cons-sort.

Gleichverteilung der Lottozahlen

Wir wollen uns von einer hinreichenden Güte der Lottozahlen überzeugen.
Dazu zählen wir das Auftreten jeder gezogenen Lottozahl in einer 49-elementigen Liste. Bei einer großen Anzahl von Ziehungen müsste sich eine Gleichverteilung der Lottozahlen ergeben. Diese visualisieren wir in einem Balkendiagramm (s. Mehrfachrekursionen).
Zur Erinnerung: Syntax der Prozedur balkendiagramm für numerische Listen:

(balkendiagramm <ls>) ; <ls> ... Liste mit Zahlenwerten</ls></ls>
Ihr Browser unterstützt Canvas nicht.

Zurück zum Algorithmusbegriff.