2010-05-19 9 views
5

No estoy seguro de cómo escribir esto: quiero generar un número aleatorio de 0 a 2, luego escribo una declaración if que ejecuta código específico solo el 33% del tiempo.¿Cómo puedo ejecutar código al azar el 33% del tiempo en PHP?

Esto es lo que he intentado hacer:

if (rand(0, 3)=="2") { echo "Success" }; 
+6

Usted tendría que hacer 'rand (0,2)' para que sea 33% de probabilidad. 'rand (0,3)' da el 25%. – sshow

Respuesta

8

Los dos argumentos representan los valores máximo y mínimo y al azar. Si quieres una posibilidad de 1 en 3, solo debes permitir 3 posibilidades. Pasar de un mínimo de 0 a un máximo de 3 permite 4 valores posibles (0,1,2,3), por lo que no hará exactamente lo que usted desea. Además, mt_rand() es una función mejor que usar que rand().

así que sería:

if (mt_rand(1, 3) == 2) 
    echo "Success"; 
+0

Para este propósito, la diferencia entre 'rand()' y 'mt_rand()' probablemente no se note ;-) – Joey

1

Su código se ejecutará el 25% del tiempo. {0 1 2 3} es un conjunto de 4 números. que quiere hacer

if(rand(1,3)==2)...

1

Reemplazar con

if (rand(0, 2)==2) { echo "Success"; } 
3

rand() límites de PHP están incluidos, por lo que querrías if(rand(0,2) == 2).

2

que ejecuta el código específico solamente 33% del tiempo.

Sólo quiero señalar que el uso de azar sólo dará el código de un 33% oportunidad de ejecutar en lugar de ejecutarlo 1/3 del tiempo.

1

Sé que esto es una respuesta tardía, pero me gustaría hacer

if(!rand(0,2)) 
{ 
    //do stuff 
} 

para cualquier fracción 1/x deseada, vuelva a colocar 0,2 con 0,x-1

Cuestiones relacionadas