[PHP] Ook random op dezelfde tijd? *

Pagina: 1
Acties:

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
ik heb een "scriptje" dat een getal genereerd tussen de 1 en de 3, en zodoende een banner uitkiest (banner 1 2 of 3).

nou is het probleem dat ik datzelfde script soms wel 3x tegelijk op een pagina aangevraagd wordt... probleem is dus dat ik dan 3x dezelfde uitkomst krijg (hij maakt het in 1x, op dezelfde tijd dus)

hoe kan ik jou zorgen dat ie echt ELKE keer dat ie gerunt wordt random is.. ook al is de tijd en de client hetzelfde(ip enzo)?
code:
1
2
3
4
5
6
7
8
9
10
11
    srand((double)microtime()*100000000);
    $nr=rand(1,3);

    switch($nr)
    {
         CASE 1:
         bla bla
         break;
       
         CASE 2:
enz enz.

is wat ik nu heb

oja, $nr+1 ofzo kan niet, want als ie dan bijv. al 3 is wordt het 4...en dan heb ik er dus geen banner voor.

het is btw niet tot 3 gelimiteerd... ik moet die 3 ook zo in 5 of bijv. 200 kunnen veranderen...

Leef lekker in het nu, er is niks anders


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Als je elke keer voordat je een random getal gaat vragen srand weer opnieuw zet, dan krijg je mooie (semi) random getallen die 3x

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 26 februari 2002 22:49 schreef Glimi het volgende:
Als je elke keer voordat je een random getal gaat vragen srand weer opnieuw zet, dan krijg je mooie (semi) random getallen die 3x
dat doe ik al... het is gewoon een include die meerdere keren ge-include wordt (gerunt dus)

Leef lekker in het nu, er is niks anders


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
[offtopique]
Vraag mijn Nederlands leraar of ie 3x een beoordeling aan je site geeft. Dat is gegarandeerd 3x anders en volledig random >:)
[/offtopique]

Verwijderd

Op dinsdag 26 februari 2002 22:52 schreef Limhes het volgende:
[offtopique]
Vraag mijn Nederlands leraar of ie 3x een beoordeling aan je site geeft. Dat is gegarandeerd 3x anders en volledig random >:)
[/offtopique]
LOL

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
Op dinsdag 26 februari 2002 22:52 schreef Limhes het volgende:
[offtopique]
Vraag mijn Nederlands leraar of ie 3x een beoordeling aan je site geeft. Dat is gegarandeerd 3x anders en volledig random >:)
[/offtopique]
jah... alleen daar heb ik niet zo veel aan :P

Leef lekker in het nu, er is niks anders


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Uhm verlaag die factor eens waarmee je die microtime mee vermenigvuldigd. Als ik het zo tel, dan zet ie de srand elke 10 seconde achter.

En een oplossing voor je $i+1 kan zijn door het te % door het aantal (zodat je nooit meer dan het aantal kan krijgen ). Moet je wel met $i op 0 beginnen

[edit] Op http://www.php.net/manual/en/function.srand.php hebben ze het over (double)microtime()*1000000

[edit]Hmmmz die php functie komt dus niet echt overeen met die van C++ :P Je hoeft hem dus maar 1x te zetten volgens http://www.php.net/manual/en/function.srand.php

  • FireFoz
  • Registratie: Juni 2001
  • Laatst online: 31-08 23:38
als ik die waarde verlaag is het idd veel beter al ja... zelf bij 10 doet ie het al aardig! :D

er zijn maar 3 banners op het moment dus kan het niet al te goed testen nu... want zelfs als ie echt 3x verschillende cijfers zou hebben, dan is de kans nog 33% dat ik een banner krijg die ik al heb gehad...

ofzo

Leef lekker in het nu, er is niks anders


Verwijderd

Op dinsdag 26 februari 2002 23:02 schreef FireFoz het volgende:
als ik die waarde verlaag is het idd veel beter al ja... zelf bij 10 doet ie het al aardig! :D

er zijn maar 3 banners op het moment dus kan het niet al te goed testen nu... want zelfs als ie echt 3x verschillende cijfers zou hebben, dan is de kans nog 33% dat ik een banner krijg die ik al heb gehad...

ofzo
dan output je toch gewoon de waarde die ie geeft en maak je er een for-loopje van met 'n stuk of 100x een random nummer.
of je laat 'm ook hoger dan 3 kiezen.
(of allebei ;) )

  • Grum
  • Registratie: Juni 2001
  • Niet online
als je wil dat je random zonder dubbele wilt hebben (let wel op dat je er altijd genoeg hebt dan)

kan je iets doen in de trant van
PHP:
1
2
3
4
<?
srand ((float) microtime() * 10000000);
list($theNum1, $theNum2, $theNum3) = array_rand(range(0,100),3);
?>

nu zit in $theNum1-3 1 random nummer tussen de 0 en de 100 (incl) gegarandeerd zonder dubbele :)
Pagina: 1