Frage wegen mt_rand

also ich hab nun mit PHP angefangen und ne frage wegen dem Zufallsgeneraor:

PHP:
<?
for ($i = 1; $i <= 2; $i++) {
   $zufallszahl = mt_rand(1, 501);
   echo $zufallszahl;
   }
?>

So, nun müsste ich doch zufallszahlen zwischen 1 und 500 bekommen....wie mir scheint fragt mt_rand aber nichtmal nach min und max, da ich als min_wert auch 50 und max_wert auch 12 eingeben kann (LOL :rolleyes: )

wo liegt denn mein fehler?

danke im vorraus, gruß Hash =)

?dit:

scheinbar werden die Zahlen hinten doch gelesen, aber falsch interpretiert!

wenn ich z.B. 5, 2 eingebe, bekomme ich nur die Zahlen 44, 45 und 55...

also ich bin ratlos X(
 
doch, eigentlich beachtet das schon die min und max-werte, (wenn man halt bei min mehr hat als vorne ist die reaktion sehr unterschiedlich ^^")
aber du hast vergessen vor jedem aufruf von mt_rand
mt_srand zu benutzen. kann sonst passieren, dass mt_rand immer die gleiche zahl ausspuckt:

PHP:
<?
for ($i = 1; $i <= 2; $i++) {
   mt_srand((double)microtime()*1000000);
   $zufallszahl = mt_rand(1, 501);
   echo $zufallszahl."<br />";
   }
?>

also bei mir klappt es einwandfrei. (eigentlich versteh ich dein problem nicht so richtig ^^")
 
Original von Stormlord
PHP:
<?
mt_srand((double)microtime()*1000000);
for ($i = 1; $i <= 2; $i++) {
   $zufallszahl = mt_rand(1, 501);
   echo $zufallszahl."<br />";
   }
?>

einmal reicht auch ;)
ber der code läuft doch.
und soweit ich mich erinnerre nimmt mt_rand "normalerweise" den ersten wert als min und den 2. als max. wenn aber der 1. größer ist, wird automatisch umgestellt und der 2. als min-Wert benutzt. Oder lieg ich da komplett daneben?
 
hmm, erstma danke für die antworten stormlord und NovitA

PHP:
<?
mt_srand((double)microtime()*1000000);
for ($i = 1; $i <= 2; $i++) {
   $zufallszahl = mt_rand(1, 50);
   echo $zufallszahl;
   }
?>

und
PHP:
<?
for ($i = 1; $i <= 2; $i++) {
  mt_srand((double)microtime()*1000000); 
  $zufallszahl = mt_rand(1, 50);
   echo $zufallszahl;
   }
?>

habbe beides versucht, aber das problem bleibt dasselbe....!

ich bekomme z.B. 4435 generiert...
das mt_srand() ist eigentlich auch nicht so wichtig, da ich nur eine zufallszahl will ;)

ich versuchs mal noch mit normal rand()....melde mich dann nohma

?dit:
Hab nochwas rausgekriegt:

wenn ich z.B. $zufallszahl = mt_rand(1, 2); mache, kommen nur die zahhlen 11, 12, 21, 22...anscheinend müssen die zahlen 1 und/oder 2 enthalten sein und keine andere....*ratlos umblick*

?dit 2.

so nu hab ichs geschafft!
es lag an der schleife, damit hat er total verrückt gespielt :rolleyes:

nur zum abschluss mein code nun:

PHP:
$zufallszahl = rand(1,50); 
      echo $zufallszahl;


srand brauch ich ja nicht weil ich nur eine zufallszahl will :)


Gruß Hash
 
Original von Hashishin
es lag an der schleife, damit hat er total verrückt gespielt :rolleyes:
die hat nicht verrückt gespielt sondern genau das gemacht was du programmiert hast. nämlich dass sie zweimal ausgeführt wird und somit 2 zufallszahlen hintereinander ausgegeben wurden. ;)

ich frag mich übrigens warum du die schleife überhaupt benutzt hast, wenn du nur eine zufallszahl wolltest?!
 
ivegod stimmt jetzt wo dus sagst :) ich hab mich schon gewundert warum immer 3232 oder 4848 etc. ausgegegeb wurden, danke damit ich die erklärung hab ;)

schleife hab ich ja schließlich rausgenommen, aber ich dachte mir kann nich schaden wenn sie in einer drin steht^^kA gestern als ich angefangen hab wars spät :rolleyes:

naja, nu gehts ja, werd mich aber sicherlich bald nochmal melden...will nu ein kleines spiel proggn wo man ne zufallszahl eraten muss, aber vll schaff ichs auch allein 8)

Gruß Hash
 
Original von Stormlord
Original von NovitAeinmal reicht auch ;)
ich wollte damit zeigen, dass man das <br /> nicht vergessen sollte :)
vielleicht hät ichs erwähnen sollen -____-" sry

ich habe mich garnicht aufs <br /> bezogen, sondern auf das mt_srand((), welches ja in der schleife stand, und dadurch bei jeder zufallszahl alles komplett neu initialisiert worden wäre (ok, bei zwei zahlen nicht die welt, aber falls es mal mehr werden sollten.... du verstehst^^)
 
Hallo,
schau dir die Schleife noch mal an:
PHP:
<?php
for ($i = 1; $i <= 2; $i++) { 
  $zufallszahl = mt_rand(1, 50);
   echo $zufallszahl;
   }
?>

Hier wird zuerst eine Zahl zwischen 1 und 50 generiert, und ausgegeben.
Danach wird noch eine generiert, und ausgegeben.
Allerdings steht dort _______keine_____ Zeichentrenner.

Sprich 4534 wäre eine: 45 und 34.

Einfach bei echo ein weiteres Zeicheneinfügen z.B.
echo "$zufallszahl ";

Dann erhälst: 45 34
 
Zurück
Oben