2010-05-19 4 views
5

Non sono sicuro di come scrivere questo: voglio generare un numero casuale da 0 a 2, quindi scrivere un'istruzione if che esegue il codice specifico solo il 33% delle volte.Come posso eseguire il codice in modo casuale il 33% delle volte in PHP?

Questo è quello che cercato di fare:

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

Si dovrebbe fare 'rand (0,2)' per renderlo 33% di possibilità. 'rand (0,3)' dà il 25%. – sshow

risposta

8

I due argomenti rappresentano i valori casuali minimo e massimo. Se si desidera una possibilità 1 su 3, si dovrebbero consentire solo 3 possibilità. Passare da un minimo di 0 a un massimo di 3 consente 4 valori possibili (0,1,2,3), in modo che non facciano esattamente quello che vuoi. Inoltre, mt_rand() è una funzione migliore da utilizzare rispetto a rand().

quindi sarebbe:

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

A tale scopo la differenza tra 'rand()' e 'mt_rand()' sarà molto probabilmente impercettibile ;-) – Joey

1

Il codice verrà eseguito il 25% del tempo. {0 1 2 3} è un insieme di 4 numeri. si vuole fare

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

1

Sostituire con

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

rand() limiti di PHP sono comprensivi, in modo che ci si vuole if(rand(0,2) == 2).

2

che esegue solo il codice specifico 33% del tempo.

Voglio solo sottolineare che l'uso casuale solo dare il codice a 33% possibilità di eseguire al contrario di eseguirlo 1/3 del tempo.

1

So che questa è una risposta in ritardo, ma mi piacerebbe fare

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

per ogni frazione 1/x desiderato, sostituire 0,2 con 0,x-1

Problemi correlati