2011-02-05 17 views
5

Crearía algunas pruebas con PhpUnit. Pero el archivo php que me gustaría probar utiliza la función mt_rand(). Entonces, ¿cómo puedo crear una prueba que sepa que el valor de mt_rand() devuelve la última vez? Gracias por responder mi pregunta y lo siento por mi mal inglés, soy de Alemania;)Pruebe la función mt_rand con PHPUnit

+0

, facilite un fragmento de código para que podamos ver – Gordon

Respuesta

12

El algoritmo Mersenne Twister es un algoritmo determinista. Comienza con una semilla y luego genera números aleatorios basados ​​en ella. Por lo tanto, dado que la semilla es la misma, generará los mismos números aleatorios.

Normalmente PHP siembra mt_rand con algunos datos basados ​​en microtime, pero puede sembrarlo manualmente usando mt_srand.

mt_srand(0); 
var_dump(mt_rand()); 
mt_srand(0); 
var_dump(mt_rand()); 

Tenga en cuenta que tanto las llamadas de función le dará el mismo número 963932192.

Así que todo lo que tienes que hacer es sembrar manualmente y podrás predecir todos los números que genera.

+0

Muchas gracias, eso es exactamente la respuesta que he estado buscando! – Ragadabing

+0

@Paloran: Si esa es la respuesta que estaba buscando, haga clic en la marca verde a la izquierda de la respuesta;) – NikiC

+0

Gracias, esa fue mi primera pregunta que hice aquí. – Ragadabing

0

Si inicializa mt_rand con el mismo valor inicial siempre, siempre obtendrá la misma serie de valores devueltos por mt_rand().

por ejemplo:

mt_srand(123456); 

for ($i = 0; $i < 10; $i++) { 
    echo mt_rand(),'<br />'; 
} 
Cuestiones relacionadas