Vorrei creare alcuni test con PhpUnit. Ma il file php che vorrei testare utilizza la funzione mt_rand(). Quindi, come posso creare un test che conosca il valore di mt_rand() restituisce l'ultima volta? Grazie per aver risposto alla mia domanda e mi dispiace per il mio pessimo inglese, vengo dalla Germania;)Test della funzione mt_rand con PHPUnit
risposta
L'algoritmo Mersenne Twister è un algoritmo deterministico. Inizia con un seme e quindi genera numeri casuali basati su di esso. Quindi, dato che il seme è lo stesso, genererà gli stessi numeri casuali.
Di norma semi PHP mt_rand
con alcuni dati basati su microtime
, ma è possibile inizializzarlo manualmente utilizzando mt_srand
.
mt_srand(0);
var_dump(mt_rand());
mt_srand(0);
var_dump(mt_rand());
Si noti che entrambe le chiamate di funzione vi darà lo stesso numero 963932192
.
Quindi tutto quello che devi fare, è seminare manualmente e sarai in grado di prevedere tutti i numeri che genera.
ringrazio molto, questo è esattamente la risposta che stavo cercando! – Ragadabing
@Paloran: Se questa è la risposta che cercavi, fai clic sul segno di spunta verde a sinistra della risposta;) – NikiC
Grazie, è stata la mia prima domanda che ho posto qui. – Ragadabing
Se si semina mt_rand con lo stesso valore di inizializzazione ogni volta, si otterrà sempre la stessa serie di valori restituiti da mt_rand().
ad esempio:
mt_srand(123456);
for ($i = 0; $i < 10; $i++) {
echo mt_rand(),'<br />';
}
si prega di fornire un frammento di codice per noi vedere – Gordon