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:
  1.  
  2. <?php
  3. // Hier wird die kleinste Kugel für diese Lotterie bestimmt (Kugel 1)
  4. $pot_kleinste_kugel        = 1;
  5. // Und hier die grösste Kugel für diese Lotterie (Kugel 49)
  6. $pot_groesste_kugel        = 49;
  7. // Die Anzahl der zu ziehenden Kugeln
  8. $anzahl_zu_ziehende_kugeln = 6;
  9. // Nun erstellen wir ein Array, worin alle Kugeln gespeichert werden die schon gezogen wurden
  10. $gezogene_kugeln           = array();
  11. ?>
  12.  

Jetzt erstellen wir die nötige PHP Funktion, damit keine Kugel doppelt gezogen wird:
Code:
  1.  
  2. // $gezogene_kugeln - in dieser Variable stehen die schon gezogenen Kugeln drin
  3. // $neue_kugel - ist eine neu gezogene Kugel
  4. // $pot_kleinste_kugel - ist die kleinstmögliche Kugel, die gezogen werden kann
  5. // $pot_groesste_kugel - ist die grösstmögliche Kugel, die gezogen werden kann
  6. function freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel)
  7. {
  8.     // Prüfen, ob die neu gezogene Kugel schon gezogen wurde
  9.     if(!in_array($neue_kugel, $gezogene_kugeln)) {
  10.         // Die neugezogene Kugel wurde noch nicht gezogen und kann daher wiedergegeben werden
  11.         return $neue_kugel;
  12.     } else {
  13.         // Die neugezogene Kugel wurde schon gezogen und daher muss eine neue Zahl gezogen werden
  14.         $neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  15.         return freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
  16.     }
  17. }
  18.  

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:
  1.  
  2. <?php
  3. $gezogene_kugeln[]      = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  4. ?>
  5.  

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:
  1.  
  2. $neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  3. $gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
  4.  

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:
  1.  
  2. <?php
  3. for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
  4.     if($i == 1) {
  5.         $gezogene_kugeln[]      = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  6.     } else {
  7.         $neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  8.         $gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
  9.     }
  10. }
  11. ?>
  12.  

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:
  1.  
  2. // SORT_ASC - Sortierung aufsteigend vom kleinsten Wert zum größten Wert
  3. array_multisort($gezogene_kugeln, SORT_ASC);
  4.  
Jetzt geben wir die gezogenen Kugeln aus:
Code:
  1.  
  2. // Wir verwenden wieder eine For-Schleife
  3. for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
  4.     echo $i.'. Kugel: '.$gezogene_kugeln[$i].'<br />';
  5. }
  6.  

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:
  1.  
  2. $pot_kleinste_kugel           = 1;
  3. $pot_groesste_kugel           = 49;
  4. $anzahl_zu_ziehende_kugeln    = 6;
  5. $gezogene_kugeln              = array();
  6.  
  7. function freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel)
  8. {
  9.     if(!in_array($neue_kugel, $gezogene_kugeln)) {
  10.         return $neue_kugel;
  11.     } else {
  12.         $neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  13.         return freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
  14.     }
  15. }
  16.  
  17. for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
  18.     if($i == 1) {
  19.         $gezogene_kugeln[]      = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  20.     } else {
  21.         $neue_kugel = rand($pot_kleinste_kugel,$pot_groesste_kugel);
  22.         $gezogene_kugeln[] = freie_kugeln($neue_kugel, $gezogene_kugeln, $pot_kleinste_kugel, $pot_groesste_kugel);
  23.     }
  24. }
  25.  
  26. array_multisort($gezogene_kugeln, SORT_ASC);
  27.  
  28. for($i = 1; $i <= $anzahl_zu_ziehende_kugeln; $i++) {
  29.     echo $i.'. Kugel: '.$gezogene_kugeln[$i].'<br />';
  30. }
  31.  

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.
Bewertung zu dieser Seite:
 
  217 Bewertungen

0 Kommentare zu diesem Thema

Du möchtest einen Kommentar abgeben?
Registriere dich oder melde dich mit deinem tbody-Konto an.