22 Stimmen

Bessere Zufallsgenerierung mit PHP

Ich weiß, dass nur die Verwendung von rand() ist berechenbar, wenn man weiß, was man tut, und Zugang zum Server hat.

Ich habe ein Projekt, das sehr von der Wahl einer möglichst unvorhersehbaren Zufallszahl abhängig. Ich suche also nach Vorschlägen, entweder andere eingebaute Funktionen oder Benutzerfunktionen, die eine Zufallszahl erzeugen können. besser Zufallszahl.

Ich habe dies für einen kleinen Test verwendet:

$i = 0;

while($i < 10000){
    $rand = rand(0, 100);

    if(!isset($array[$rand])){
        $array[$rand] = 1;
    } else {
        $array[$rand]++;
    }

    sort($array);
    $i++;
}

Ich habe festgestellt, dass die Ergebnisse gleichmäßig verteilt sind, und dass es ein ungerades Muster gibt, wie oft jede Zahl erzeugt wird.

0 Stimmen

Es gibt eine neue Funktion in php7, die tut genau das, was Sie brauchen .

1voto

Salvador Dali Punkte 197375

Eine neue PHP7 gibt es eine Funktion, die genau das tut, was Sie brauchen: Sie erzeugt kryptographisch sichere Pseudo-Zufallszahlen.

int random_int ( int $min , int $max )

Erzeugt kryptografische Zufallszahlen, die für die Verwendung geeignet sind wo unvoreingenommene Ergebnisse entscheidend sind (z.B. beim Mischen eines Pokerdecks).

Für eine detailliertere Erklärung über PRNG und CSPRNG (und deren Unterschied) sowie darüber, warum Ihr ursprünglicher Ansatz eigentlich eine schlechte Idee ist, lesen Sie bitte meinen eine weitere sehr ähnliche Antwort .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X