Fehler mit der mt_rand Funktion

Alice

Erfahrenes Mitglied
Hallo. :)

Wie der Titel schon sagt funktioniert die Funktion mt_rand nicht richtig bei mir.

PHP:
   $zufall_zahl = mt_rand(0000000001, 9999999999);

Es werden meistens 10-Stellige Zahlen gebildet, aber bei 1 von 10 "Zufällen" sind es nur 9-Stellige (manchmal auch nur 8-Stellige) zahlen.

Woran kann das liegen?
 
Hallo,

naja der Aufruf:

PHP:
$zufall_zahl = mt_rand(0000000001, 9999999999);

erzeugt nunmal eine Zufallszahl von 1-9999999999.

wenn du stetig eine 10stellige haben möchtest musst du es so aufrufen:

PHP:
$zufall_zahl = mt_rand(1000000000, 9999999999);
 
Es liegt wohl an der Verteilung der Zahlenmengen.
x-stellige Zahlen = 10^x

Die Wahrscheinlichkeit für zB eine zweistellige Zahl ist 100/10^10 ... Darum kriegt man viele hochstellige Zahlen.
 
Und wenn du dennoch eine Zufallszahl mit anführenden Nullen haben willst, musst du diese füllen:
PHP:
$zufall_zahl=str_pad($zufall_zahl, 10 ,'0', STR_PAD_LEFT);
 
Anders geht es nicht?

Hauptsache die Zufallszahl ist 10-Stellig und die Wahrscheinlichkeit unter 0% das sich die Zahlen wiederholen.
 
Was heißt anders? mt_rand funktioniert doch einwandfrei bei dir, habe beschrieben warum nur hochstellige Zahlen erzeugt werden. Was erwartest du denn für Werte mit welcher Verteilung?
 
Ja die Wahrscheinlichkeit wenn du mit mt_rand als 2. Parameter eine 10stellige Zahl übergibst, ist recht gering das du eine Zufallszahl im kleinerem Bereich bekommst.

Es ist halt Logisch.

Wenn du aber nun ein paar Zufallszahlen dennoch im kleineren und im größeren Bereich haben willst musst du halt mit mt_rand einmal kleinere und mit einem 2. mt_rand größere generieren lassen.
 
Zurück