Gymnasium Löbau/Vertiefungsklasse 2013/Projektarbeit: Lotto 6 aus 49
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
[[Bild:Lotto_Ziehungsgeraet1.jpg|miniatur|hochkant=2|Ziehungsgerät zum Lotto 6 aus 49]]
== Vorüberlegungen ==
In einer beliebigen Anzahl sollen Lottoziehungen 6 aus 49 simuliert werden.<br />
Zunächst ist es kein Problem, Zufallszahlen zwischen 1 und 49 zu bestimmen (s. [[Gymnasium_Löbau/Vertiefungsklasse_2013/Wiederholung:_Datentypen_und_Programmstrukturen#Zufallszahlen|Zufallszahlen in Datentypen und Progammstrukturen]].
Wir sollten aber daran denken, dass diese Zahlen ohne Zurücklegen gezogen werden und damit paarweise verschieden sein müssen.
== Algorithmus ==
Der nachfolgende Algorithmus kann als Orientierung benutzt werden, um ''eine'' korrekte Lottoziehung zu simulieren. Natürlich wollen wir dann Lottoziehungen in einer ''beliebigen Anzahl'' generieren.
* Lege ein leeres Datenfeld für eine Lottoziehung fest.
* Wiederhole den nachfolgenden Algorithmus für 6 Lotto-Zahlen:
** Erzeuge eine Zufallszahl zwischen 1 und 49.
** Prüfe, ob sie bereits Element des aktuellen Datenfeldes ist.
** Trifft dieser Fall zu, wiederhole die Ziehung bei unverändertem Datenfeld.
** Anderenfalls füge die Zufallszahl dem aktuellen Datenfeld hinzu.
'''Hinweis:''' Mit der Eigenschaft
index = myFeld.indexOf(13);
kann ermttelt werden, welchen Feldindex das Element mit dem Wert $13$ besitzt. Sollte es nicht existieren, wird $-1$ zurück gegeben.
== Implementation ==
<code id="5c156c228668d">
function LottoZiehung() {
var ziehung = new Array();
// -- weitere Anweisungen --
return ziehung;
}
</code>
<code id="5c157fc8c4c0b" hidden>
function korrektZiehung(n) {
var korrekt = true, m = 1;
while (korrekt && m < n) {
var feld = LottoZiehung();
for (var i = 1; i < feld.length - 1; i++)
for (var j = i + 1; j < feld.length; j++)
if (feld[i] == feld[j]) korrekt = false;
m++;
}
return (korrekt && feld.length == 6);
}
</code>
<check execute="korrektZiehung(100)">true</check>
<run id="5c156c22866fd">
LottoZiehung();
</run>
<code id="5c1582bfe097a">
function LottoAusgabe(anzahl) {
// -- weitere Anweisungen --
}
</code>
<run id="5c1582bfe0a57">
LottoAusgabe(20);
</run>