Sponsor-Board.de

Normale Version: PHP Random Frage
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin,

ich sitze gerade an einem winzigen Script (nein, kein Passwortgenerator, auch wenn man das denken könnte ^^) und nutze da zur Generierung von bestimmten Strings folgende Funktion:

PHP-Code:
function random($length)
{
    
$random_string "";
    
$valid_chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    
$num_valid_chars strlen($valid_chars);

    for (
$i 0$i $length$i++)
    {
        
$random_pick rand(1$num_valid_chars);
        
$random_char $valid_chars[$random_pick-1];
        
$random_string .= $random_char;
    }
    return 
$random_string;


Diese wird dann in einer for-Schleife aufgerufen, aber da kommt immer der gleiche String raus. Woran liegt das? Ich habe bisher nicht wirklich tiefgründig mit Zufallszahlen in PHP gearbeitet, daher habe ich leider keinen richtigen Ansatz.

Danke!

Du musst mit [Link: Registrierung erforderlich] einen seed setzen um bessere Zufalszahlen zu bekommen. Gleicher Seed -> gleiches ergebnis.
Hmm, so in der Art dachte ich mir das, in Java setzt man auch immer erst nen Seed nur ich hatte die Option in PHP nicht gefunden. Gibt es sowas wie "System.currentTimeMillis()" in PHP auch, also etwas, was die aktuelle Systemzeit in Millisekunden als Rückgabe hat? Das wäre doch ein guter Seed Biggrin
microtime
Sowas musste ich auch mit php machen und kann dir das vlt geben

Mein Script generiert aber ein Passwort und du kannst aussuchen wieviele zeichen es haben soll, habe es mit Switches geschrieben

switch(Variable) <-- Wird abgefragt
case: Wert von Variable;
Auszuführende Aktion/en
break;

ist viele zeilen lang aber funktioniert
Das bringt mich ja in dem Zusammenhang nicht wirklich weiter. Ich habe jetzt in der Funktion oben folgende Zeile eingefügt:

Code:
srand(microtime(TRUE));


Leider kommen trotzdem immer die gleichen Strings raus. Ideen?

Dream-Code schrieb:
Leider kommen trotzdem immer die gleichen Strings raus. Ideen?


Über mehrere Seitenaufrufe hinweg? Den seed darfst du nur einmalig setzen, nicht jedesmal wieder, wenn du nämlich dann wieder den gleichen seed setzt bekommst du auch wieder das gleiche ergebnis.

Naja, da die Funktion ja logischerweise (durch Rechenzeit) mit einigen Millisekunden Abstand aufgerufen wird, dürfte der Seed ja jedes Mal anders sein. Es handelt sich an sich immer nur um einen Seitenaufruf, bei dem aber diese Funktion mehrmals hintereinander in einer Schleife genutzt wird.

Dream-Code schrieb:
Naja, da die Funktion ja logischerweise (durch Rechenzeit) mit einigen Millisekunden Abstand aufgerufen wird, dürfte der Seed ja jedes Mal anders sein.


Vertue dich da mal nicht, ne Millisekunde ist ne ganze Menge.

[Link: Registrierung erforderlich]
Schau dir mal die Kommentare an, dort sind einige gute Beispiele.

Moin,

egal welches der Beispiele ich teste, es will nicht funktionieren. Da der Code an sich nicht unbedingt Public sein soll, werde ich dir tkausl wenn das in Ordnung ist einfach mal eine PN schreiben mit dem kompletten Code, vielleicht kannst du mir ja helfen. Scheinst immerhin Ahnung von PHP zu haben im Gegensatz zu mir ;D
Seiten: 1 2
Referenz-URLs