Der Zufall als Absicht
An dieser Stelle folgen mehrere Beispiele, wie man mit Absicht durch die Verwendung von Datenreihen den Faktor Zufall erzeugt.
Lotto spielen
Ich sass einmal da und fragte mich wie ich am besten per PHP das Lotto System am besten darstellen konnte.
Am Ende lief die eigentliche Berechnung der Lottozahlen mit PHP auf 3 Zeilen hinaus. Bedeutend weniger als ich zuerst vermutet habe. Aus dem Grunde vermutlich aber auch das ich keine Prüfung mehr vornehmen muss.
Folgende PHP Funktionen wurden dabei verwendet:
- Anlegung einer Datenreihe mit den Lottozahlen
- Mischen der Datenreihe
- Ermittlung der Superzahl als Zufallszahl
Die erste praktische Anwendung für diesen Aufbau erreichte ich dann mit der Überarbeitung meiner Zufallsskripte auf Nevada Fields. Man benötigt nicht immer eine Datenbank für solche Zufallsfunktionen. Aber trotzdem sollte ich an dieser Stelle erwähnen das MySql es auf einfache Weise auch ermöglichen würde. ORDER by RAND() LIMIT 5
Aufbau der Berechnung der Lottozahlen
#Berechnung der Lottozahlen
$lotto = range(1,49);
shuffle($lotto);
$superzahl = rand(0,9);
#Ausgabe der Lottozahlen
$i = 0;
do {
if ($i === 6) {
echo 'Zusatzzahl: ';}
echo $lotto[$i].' ';
$i++; }
while($i >= 6);
echo 'und die Superzahl ist '.$superzahl.'.';
Aktuelle Lottoziehung
Reihenfolge von Elementen in einem Bild
Das Bild was sie rechts sehen ist eine PHP Datei die, die 33 Bildelemente als Inline Images beinhaltet.
$bilder = array('Daten1','Daten2'); #Datenreihe anlegen
$zufall = imagecreatetruecolor(430,430);
$farbe = imagecolorallocate ($zufall,22,22,22);
imagefill($zufall,0,0,$farbe);
shuffle($bilder); #Zufall auf Datenreihe anwenden
#Vorliegende Bildergrösse der 33 Einzelbilder
$width = 60;
$height = 60;
$n = 0; #Zeilennummer
$wechsel = array(6,12,18,24,30);
for ($i=0;$i<=32;$i++) { #Schleife für die 33 Elemente
#Wechsel der Reihe nach jeweils 6 Elementen
if (in_array($i,$wechsel)){$n++;} #Wechsel der Zeile nach jeweils 6 Elementen
#Daten des momentanen Bildelementes
$image = imagecreatefromstring(base64_decode($bilder[$i]));
#Momentanes Bildelement einfügen
imagecopy($zufall,$image,70*$i-$n*420+10,70*$n+10,0,0,$width,$height);}
#Ausgabe des Zufallbildes
header('Content-Type: image/jpeg');
header('Cache-Control: no-cache,must-revalidate');
header('Expires: '.gmdate('r',time()));
imagejpeg($zufall);
imagedestroy($zufall);
Natürlich könnte man die Inline Images durch Bilddateien ersetzen und diese dann per PHP ansprechen. Dadurch würde nur eine Änderung folgender Zeile notwendig $image = imagecreatefromjpeg($bilder[$i]);
mit einer entsprechenden Anpassung der Datenreihe.