Zufallszahl generieren?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
algorithmus
beginnen
beispiel
betriebssystem
computer
erachten
funktion
gleiche startwert
hilfe
logarithmus
manual
muster
sekunde
sprache
startwert
uhrzeit
vielen dank
vorhersehbaren zahlenwert
wissen
zufallsgenerator
-
Hallo,
wie generiert man mit PHP eine Zufallszahl, m?glichst mit 5 oder mehr Stellen?
Vielen Dank, lagerhaus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das geht mit der rand() Funktion.
In deinem Fall w?hre das
$var = rand(10000, 99999); // Gibt eine 5-stellige zufalls zahl
hier gibt es mehr Informationen:
http://de3.php.net/manual/de/function.rand.php
EDIT 0-checka
Der Vollst?ndigkeit halber sei auch hier erw?hnt, dass die Funktion srand() vor rand() aufgerufen werden sollte.
-
EDIT 0-checka
Der Vollst?ndigkeit halber sei auch hier erw?hnt, dass die Funktion srand() vor rand() aufgerufen werden sollte.
Der vollen Vollst?ndigkeit halber sei erw?hnt, dass diese Vorgehensweise seit PHP-Version 4.2.0 nicht mehr n?tig ist (also beispielsweise bei Lima-City-Webspace).
Die Online-Doku mit vielen n?tzlichen Beispiel-Scripts:
http://de.php.net/manual/de/function.rand.php
MfG
alcoplex -
so, wenn wir schon beim Thema Zufall sind, es gibt in PHP oder sonst einer anderen Sprache kein absoluten Zufall, denn auch die Computer suchen die Zahl nach einem bestimmten logaritmus raus.!
Computer berechnen die Zahl wohl eher nach einem Algorithmus und nicht einem Logarithmus, aber sonst stimmt es was du sagst.
Allerdings gibt es z.B. in Delphi doch recht gute Zuf?llige Zahlen, da dort meines Wissens nach die Uhrzeit zu Hilfe genommen wird, die sich ja un nie gleich ist. -
so, wenn wir schon beim Thema Zufall sind, es gibt in PHP oder sonst einer anderen Sprache kein absoluten Zufall, denn auch die Computer suchen die Zahl nach einem bestimmten logaritmus raus.!
Computer berechnen die Zahl wohl eher nach einem Algorithmus und nicht einem Logarithmus, aber sonst stimmt es was du sagst.
Allerdings gibt es z.B. in Delphi doch recht gute Zuf?llige Zahlen, da dort meines Wissens nach die Uhrzeit zu Hilfe genommen wird, die sich ja un nie gleich ist.
gut, dann bin ich da wohl durhceinander gekommen ;)
Aber was hat das mit der Uhr zu tun, w?ren dann 2 Zahlen, die zur selben UHrzeit (oider meinste die Zeit, die seit 1970 in secunden l?uft) generiert werden die gleichen sein=?
ninja02 -
Ich wei? nicht, wie das genau geschieht, ich wei? nur, das die Uhrzeit (Ob richtige Uhrzeit oder z.B der Unix-Timestamp, ka) eine Rolle spielt.
Ich vermute aber mal, dass da noch andere Faktoren eine Rolle spielen. -
Die in diversen Programmiersprachen vorhandenen Zufallsfunktionen berechnen meist eine pseudozuf?llige duale Gleitkommazahl, die irgendwo zwischen 0 und 1 liegt. Man nimmt dazu eine Startzahl und erzeugt aus dieser mit der Formel eine neue Zahl. Deshalb brauchen "Zufallsfunktionen" immer einen Startwert. Der gleiche Startwert erzeugt immer auch den gleichen Pseudozufallswert. W?rde man auf diese Art beispielsweise einen Spielw?rfel programmieren (Bereich: 1--6), w?rde, egal wann und wie das Programm gestartet werden w?rde, beim ersten Wurf immer die gleiche Zahl fallen.
Daher nimmt man einen m?glichst nicht vorhersehbaren Zahlenwert irgendwo aus dem Betriebssystem und benutzt diesen als Startwert f?r die Pseudozufallsfunktion. Nun wird der Zufallsgenerator immer an einem anderen Pseudozufallswert beginnen. Ein Beispiel w?ren irgendwelche Milisekunden-Werte eines internen Timer. Der Unix-Timestamp ist meines Erachtens nicht daf?r geeignet, da er zu grob ist (Sekundenbasis).
MfG
alopex -
Daher nimmt man einen m?glichst nicht vorhersehbaren Zahlenwert irgendwo aus dem Betriebssystem und benutzt diesen als Startwert f?r die Pseudozufallsfunktion. Nun wird der Zufallsgenerator immer an einem anderen Pseudozufallswert beginnen. Ein Beispiel w?ren irgendwelche Milisekunden-Werte eines internen Timer. Der Unix-Timestamp ist meines Erachtens nicht daf?r geeignet, da er zu grob ist (Sekundenbasis).
Was ist das denn f?r ein Argument???
M?chtest du den Zufallsgenerator immer wieder neu Initialisieren?
Allerdings sind dann auch Milisekunden zu ungenau.
Wenn man ihn nur einmal initialisiert reichen Sekunden v?llig aus.
Denn du wirst doch nicht deine Seite ?fters als ein mal in der Sekunde neuladen.
Wenn der Startwert sich nur um eine Zahl unterscheidet, sollte ein v?llig anderes Ergebniss rauskommen.
Was ist denn das Problem der Pseudozufallsfunktion?
Das Problem dieser Funktionen ist, dass sie Muster bilden.
D.h. Wenn man mehrere Zufallszahlen zieht stehen sie in einen strukturierten Verh?lltniss.
Allerdings ist dieser Effekt wirklich nur bei Programmen entscheiden, welche sehr viele Zufallszahlen ziehen. Denn dieser Muster sind bei ein paar hintereinader folgenden Zufallszahlen nicht zu erkennen.
F?r einfache Programme reichten die Zufallzahlen v?llig aus.
Jens -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage