• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

php wird nur einmal abgearbeitet...

Metallica

Lounge-Member
hi leute!

in meinem php-script erzeuge ich 'ne zufallszahl.
<?
$set_zufall1 = mt_rand(1,30);
echo "set_zufall1=$set_zufall1";
?>


das problem: wenn ich das file im browser aufrufe, dann wird 'ne zahl generiert.
das passiert aber leider nur einmal.
bei jedem weiteren aufruf des files (auch in einem neuen browserfenster) kann ich immer nur die gleiche zahl sehen. es wird also keine mehr generiert von php.
warum??
=> hängt das viell. mit dem caching vom IE ab bzw. wie kann ich dem abhilfe schaffen??
 
ok. alles klar.
da sich das ding aber auf die systemuhr bezieht bekomme ich immer ziemlich "gleiche" zufallszahlen.

hab jetzt ein script gefunden wie man eine gewichtete Verteilung macht.

srand ((double) microtime() * 1000000);
//Array anlegen: die Werte als Indizes, Gewichte als Werte.
$a = array (1=>4,2=>3,3=>3,4=>2,5=>2,6=>2);
//Dann holst du die Summe aller Gewichte mit
$x = array_sum ($a);
//Zufallszahl ermitteln:
$r = floor(rand (0,$x));
// und raussuchen, welcher Wert damit gemeint ist:
$s = 0;
for (reset($a); list($z, $w) = each($a); )
{
$s+=$w; // bisherige Summe ums aktuelle Gewicht erhoehen
if ($s>$r) break; // Abbruch wenn Gewichtsumme>Zufallszahl
}
// und ausgeben
echo $z;


ich brächte das aber wie folgt:
zufallszahl von 1-30
gewichtung
1-7 => bild1
8-13 => bild2
14-18 => bild3
19-22 => bild4
23-25 => bild5
26,27 => bild 6
28 => bild7
29,30 => bild8

=> insgesamt brauche ich pro durchgang immer 5 zufallszahlen die ich dann an flash sende. je nachdem welche zahl von php kommt nimmt flash dann bild 1-8.

ich hab so 'ne gewichtung auch schon in flash probiert. aber da kommen andauernd gleiche bzw. ziemlich na beieinanderliegende zufallszahlen.
liegt das vielleicht daran, dass das intervall von 1-30 zu klein ist??
 
also so schwer is das ja nun nicht...

wenn man ein bischen programmieren kann, dann ist das kein Prob:
<?PHP
function pic_rand()
{
$maxPic = 30 # Anzahl der Bilder

mt_srand ((double)microtime()*1000000);
$intPicID=mt_rand(1,$maxPic);

if($intPicID <= 7) $strPicture = "Bild 1";
if(($intPicID >= 8) && ($intPicID <= 13)) $strPicture = "Bild 2";
if(($intPicID >= 14) && ($intPicID <= 18)) $strPicture = "Bild 3";
if(($intPicID >= 19) && ($intPicID <= 22)) $strPicture = "Bild 4";
if(($intPicID >= 23) && ($intPicID <= 25)) $strPicture = "Bild 5";
if(($intPicID == 26) || ($intPicID == 27)) $strPicture = "Bild 6";
if($intPicID == 23) $strPicture = "Bild 7";
if(($intPicID == 29) || ($intPicID == 30)) $strPicture = "Bild 8";

return $strPicture
}

pic1 = pic_rand();
pic2 = pic_rand();
pic3 = pic_rand();
pic4 = pic_rand();
pic5 = pic_rand();

?>
 
Zurück
Oben