Lotterie 6aus49 mit PHP erstellen
In diesem Tutorial wird gezeigt, wie man eine Lotterie mit 6 aus 49 erstellt.
Zuerst fangen wir mit den Konfigurationswerten an:
Code:
<?php
// Hier wird die kleinste Kugel für diese Lotterie bestimmt (Kugel 1)
$pot_kleinste_kugel = 1;
// Und hier die grösste Kugel für diese Lotterie (Kugel 49)
$pot_groesste_kugel = 49;
// Die Anzahl der zu ziehenden Kugeln
$anzahl_zu_ziehende_kugeln = 6;
// Nun erstellen wir ein Array, worin alle Kugeln gespeichert werden die schon gezogen wurden
$gezogene_kugeln = array();
?>
Jetzt erstellen wir die nötige PHP Funktion, damit keine Kugel doppelt gezogen wird:
Code:
// $gezogene_kugeln - in dieser Variable stehen die schon gezogenen Kugeln drin
// $neue_kugel - ist eine neu gezogene Kugel
// $pot_kleinste_kugel - ist die kleinstmögliche Kugel, die gezogen werden kann
// $pot_groesste_kugel - ist die grösstmögliche Kugel, die gezogen werden kann
function freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel)
{
// Prüfen, ob die neu gezogene Kugel schon gezogen wurde
if(!in_array($neue_kugel, $gezogene_kugeln)) {
// Die neugezogene Kugel wurde noch nicht gezogen und kann daher wiedergegeben werden
return $neue_kugel;
} else {
// Die neugezogene Kugel wurde schon gezogen und daher muss eine neue Zahl gezogen werden
$neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
return freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
}
}
Jetzt benötigen wir nur noch den Ablauf für das Ziehen der Kugeln und der schaut so aus:
1. Kugel wird gezogen
Da es sich hierbei um die erste Kugel handelt, muss daher nicht geprüft werden, ob diese schon gezogen wurde
Deshalb lassen wir mit der PHP rand() Funktion eine Zahl zwischen 1 und 49 zufällig ausgeben
Code:
<?php
$gezogene_kugeln[] = rand($pot_kleinste_kugel,$pot_groesste_kugel);
?>
2. Kugel wird gezogen
Nun brauchen wir die Funktion freie_kugeln, die prüft, ob eine neu gezogenen Kugel schon gezogen wurde. Wenn ja, läuft die Funktion freie_kugeln solange erneut durch, bis eine Kugel gezogen wurde, die noch noch davor gezogen wurde:
Code:
$neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
$gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
3. Kugel wird gezogen
Auch hier ist es das selbe Prinzip wie bei der 2. Kugel, die gezogen wurde. Genauso für alle weiteren Kugeln, die noch gezogen werden....
Damit dieses Tutorial überschaubar bleibt, zeige ich nun den Vorhergang ab der 1. Kugel. Diesmal aber, um Code zu sparen, in einer For-Schleife, die 6 mal durchläuft. Wir möchten ja 6 Kugeln ziehen:
Code:
<?php
for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
if($i == 1) {
$gezogene_kugeln[] = rand($pot_kleinste_kugel,$pot_groesste_kugel);
} else {
$neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
$gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
}
}
?>
Nun stehen alle 6 gezogenen Kugeln in dem Array "$gezogene_kugeln"
Da wir die Zahlenreihenfolge von der kleinsten Kugel an sortiert haben möchten, verwenden wir nun noch die PHP Funktion array_multisort();
Code:
// SORT_ASC - Sortierung aufsteigend vom kleinsten Wert zum größten Wert
Jetzt geben wir die gezogenen Kugeln aus:
Code:
// Wir verwenden wieder eine For-Schleife
for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
echo $i.'. Kugel: '.$gezogene_kugeln[$i].'<br />';
}
In der Ausgabe sieht das Ganze folgendermaßen aus:
1. Kugel: 5
2. Kugel: 13
3. Kugel: 25
4. Kugel: 26
5. Kugel: 27
6. Kugel: 45
Der komplette PHP Code nochmal zusammengefasst:
Code:
$pot_kleinste_kugel = 1;
$pot_groesste_kugel = 49;
$anzahl_zu_ziehende_kugeln = 6;
$gezogene_kugeln = array();
function freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel)
{
if(!in_array($neue_kugel, $gezogene_kugeln)) {
return $neue_kugel;
} else {
$neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
return freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
}
}
for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
if($i == 1) {
$gezogene_kugeln[] = rand($pot_kleinste_kugel,$pot_groesste_kugel);
} else {
$neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
$gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
}
}
for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
echo $i.'. Kugel: '.$gezogene_kugeln[$i].'<br />';
}
Viel Spaß beim Verwenden der Lotterie 6 aus 49
Bei Fragen oder Anregungen zu dieser Seite, steht dir das
Forum zur Verfügung.
Diese Seite wurde 1.175 mal angesehen.