Zufallszahlen

Hallo,
ich habe ein kleines Programm geschrieben, mit dem eine vorher bestimmte Anzahl an Zufallszahlen zwischen 2 vorher festgesetzten Grenzen generiert werden. Nun soll mittels eines Radiobottons dem User die Möglichkeit gegeben werden zu entscheiden, ob beim 2.Mal die gleiche Zahlenfolge oder eine neue zufällige Folge ausgegeben werden soll. Die Variante eine neue zufällige Folge zu generieren klappt ohne Probleme, leider bekomme ich nicht hin, dass die gleiche FOlge erneut ausgegeben wird. Hat jemand eine Idee?

Gruß Bensche

Hallo Bensche,

das hängt schlicht weg davon ab, wie Du den Zufallsgenerator initialisierst. Dies kannst Du im PHP mit der Funktion srand() erledigen. Wenn Du den Parameter für die Funktion abspeicherst, sollte Deine Programmidee verwirklichbar sein.

MfG Georg V.

Ich habe die Funktion rand() genommen. Wie kann ich denn die Parameter abspeichern?

Gruß Bensche

Die Frage ist, was willst du mit der zufällig generierten Zahl machen?

Die Daten werden in dem POST array ja nur zwischengespeichert und wenn du eine neue Seite aufrufst, sind diese Daten weg. Du müsstest sie dann zwischenspeichern und dafür gibt es eine Menge an möglichkeiten. Du kannst Sie in einer Textdatei speichern (fopen), oder du kannst sie über die URL versenden ($_GET), du kannst sie in einer Session ($_SESSION) oder in einerm Cockie speichern ($_COCKIE) oder aber in der Datenbank speichern (MySQL). Aber was du letztendlich benutzt solltest, hängt davon ab was du mit der Zahl vorhast, wie oft das Programm ausgeführt wird (performancefrage). Wenn es nur einfache Spielerei ist, dann benutzt $_SESSION.

Danke für die Vorschläge!
Also, die generierten Zufallszahlen sollen einfach nur angezeigt werden. Durch das Drücken eines Radiobuttons sollen neue Zufallszahlen generiert. Durch das Drücken eines anderen Buttons soll noch einmal die gleiche Zahlenfolge angezeigt werden. Es handelt sich also wirklich nur um eine kleine Spielerei, dadurch sollte $_Session reichen. Allerdings habe ich absolut keinen Plan wie ich diesen Befehl in das Programm einbaue… :frowning:

Gruß Bensche

Nichts leichter als das : )
Ist getestet und es funktioniert. Sofern du nicht eine alte Steinzeit Version von PHP haben solltest, müsste es bei dir auch funktionieren.

<?php session_start();
?\> Neue Zahl generieren Alte Zahl wiederholt anzeigen <?php if(isset($_POST["submit1"])){
if(isset($\_POST["random"])){ if($\_POST["random"] == "newrandom"){ $\_SESSION["random"] = rand(2, 1000); echo $\_SESSION["random"]; } if($\_POST["random"] == "oldrandom"){ if($\_SESSION["random"]){ echo $\_SESSION["random"]; } else { echo "Bitte generieren Sie zuerst eine Zahl!"; } } } else { echo "Bitte wählen Sie, ob Sie eine Zahl generieren möchten oder ob Sie eine bereits generierte Zahl anzeigen lassen möchten!"; } } ?\>

Danke, das hat mir schon sehr weitergeholfen! Allerdings soll nicht nur eine Zufallszahl ermittelt werden, sondern 10. Ich habe schon ohne ende rumprobiert, aber leider ohne Erfolg :frowning: Ich habe in die if-Schleifen eine for-Schleife eingebaut, um dem Programm zu sagen, dass 10 Zahlen generiert werden, aber er gibt trotzdem nur eine aus… :frowning:

Geht auch, ein bischen mehr Code und taadaaa
Mit diesem Script kannst du selbst auswählen, wie oft die Zahl generiert werden soll. Ich hoffe es hilft dir weiter.
Versuch den Code zu verstehen und auch mal selbst zu Programmieren. Du wirst sehen nach einer Zeit ist es garnicht so schwer wie es anfangs ausgesehen hat : )

<?php session_start();
?\> Bitte geben Sie hier an, wie oft eine Zahl generiert werden soll WICHTIG!! Es sind nur Zahlen erlaubt!!! Neue Zahl generieren Alte Zahl wiederholt anzeigen Session leeren <?php if(isset($_POST["submit1"])){
if(isset($\_POST["random"])){ if($\_POST["random"] == "newrandom"){ if($\_POST["number"] != "" && eregi("^([0-9]{1,7})$", $\_POST["number"])){ $\_SESSION["count"] = array(); for($i=1; $i \<= $\_POST["number"]; $i++){ $\_SESSION["count"][$i] = rand(2, 1000); echo "Zahl " . $i . " = " . $\_SESSION["count"][$i] . " "; } } else{ echo "Bitte wählen Sie, wie oft eine zufällige Zahl generiert werden soll!"; } } if($\_POST["random"] == "oldrandom"){ if($\_SESSION["count"]){ $i = 1; foreach($\_SESSION["count"] as $number){ echo "Zahl " . $i . " = " . $number . " "; $i++; } } else { echo "Bitte generieren Sie zuerst eine Zahl!"; } } if($\_POST["random"] == "sessiondestroy"){ session\_destroy(); } } else { echo "Bitte wählen Sie, ob Sie eine Zahl generieren möchten oder ob Sie eine bereits generierte Zahl anzeigen lassen möchten!"; } } ?\>

Danke, du hast mir sehr geholfen!
Kene Angst, ich habe den Code nicht blind übernommen ohne mir vorher anzugucken, was da überhaupt passiert :wink: Mein Problem ist einfach nur, dass mir bei manchen Befehlen die Ansätze fehlen…
Also, danke nochmal!

Gruß Bensche

So, eigentlich habe ich das Programm verstanden… Bei einer Zeile bin ich mir allerdings nicht wirklich sicher. Ich kann mir zwar denken, was der Befehl heißen soll, aber so ganz verstehe ich den Befehl leider nicht :frowning: Also, was genau bezweckt folgende Zeile bzw. was steckt hinter ihr:

if($_POST[„number“] != „“ && eregi("^([0-9]{1,7})$", $_POST[„number“])){

Ansonsten ist das Programm kein Problem!
Danke nochmal!

Gruß Bensche

Einfach überprüfung

if($_POST[„number“] != „“ && eregi("^([0-9]{1,7})$", $_POST[„number“])){

if(
Wenn

$_POST[„number“] != „“
Post Array „Number“ nicht leer ist

&&
und

eregi("^([0-9]{1,7})$", $_POST[„number“])
der Inhalt des POST array „number“ nur aus Zahlen zwischen 0 - 9 besteht und min 1 Ziffer aber höchstens 7 Ziffern lang ist

9999999 (währe true)
99999999 (währe false)

Gruß

Prahkael

OK, danke!

Aber warum läuft das Programm den trotzdem, obwohl ich eine 8-stellige Zahl eingebe?

Gruß Bensche

Das Script ist mit den If schleifen so versehen, dass wenn etwas „false“ ist, eine Fehlermeldung ausgegeben wird.

solltest du bei 8 Zahlen dementsprechend „SAU“ viele zufällig generierte Zahlen bekommen, dann poste mal bitte das Script von dir.

Ich habe mir, das von mir gepostete, nochmal angeschaut und ausgeführt und es funktioniert zufriedenstellend. Kann sein, dass du vlt etwas kleines abgeändert hast.

Werde mir das dann nochmal anschauen.

Gruß
Prahkael

Ich weiß schon woran es lag. Trotzdem danke!

Gruß Bensche