mt_rand
En esta página
mt_rand
Genera un valor aleatorio mediante el generador de números aleatorios Mersenne Twister
Descripción#
mt_rand(): int
```php
```php
mt_rand(int $min, int $max): int
Muchos generadores de números aleatorios provenientes de viejas bibliotecas libcs tienen comportamientos dudosos y son muy lentos. mt_rand es una función de reemplazo para rand. Utiliza un generador de números aleatorios de característica conocida, el " Mersenne Twister " que es 4 veces más rápido que la función estándar libc.
Llamada sin los argumentos opcionales min y max, mt_rand devuelve un número pseudoaleatorio, entre 0 y mt_getrandmax. Para obtener un número entre 5 y 15 inclusive, se debe utilizar mt_rand(5,15).
[!CAUTION] Esta función no genera valores criptográficamente seguros, y no debe ser utilizada con fines criptográficos, o con fines que requieran que los valores devueltos sean indescifrables.
Si se requiere aleatoriedad criptográficamente segura, el
Random\Randomizerpuede ser utilizado con el motorRandom\Engine\Secure. Para casos de uso simples, las funcionesrandom_intyrandom_bytesproporcionan una API práctica y segura que es soportada por el CSPRNG del sistema operativo.[!CAUTION] Esta función utiliza la instancia global Mt19937 ("Mersenne Twister") como fuente de aleatoriedad y por lo tanto comparte su estado con todas las demás funciones que usan el Mt19937 global. El uso de cualquiera de estas funciones avanza la secuencia para todas las demás funciones, independientemente del ámbito.
Generar secuencias repetibles inicializando
mt_srandosrandcon un valor conocido también producirá una salida repetible de esta función.Prefiera utilizar los métodos de
Random\Randomizeren todo el código nuevo.
Parámetros#
min
Valor más bajo que puede ser devuelto (por omisión: 0)
max
Valor más alto que puede ser devuelto (por omisión: mt_getrandmax).
Valores devueltos#
Un int aleatorio comprendido entre min (o 0) y max (o mt_getrandmax, inclusivo).
Errores/Excepciones#
- Si
maxes inferior amin, se lanzará una excepciónValueError.
Historial de cambios#
| Versión | Descripción |
|---|---|
| 8.0.0 | Se lanzará una excepción ValueError si max es inferior a min; anteriormente, se emitía un E_WARNING y la función devolvía false. |
| 7.2.0 | mt_rand recibió una corrección de error para un bug de polarización módulo. Esto significa que las secuencias generadas con un valor de inicialización específico pueden diferir de PHP 7.1 en máquinas de 64 bits. |
| 7.1.0 | rand se convirtió en un alias de mt_rand. |
| 7.1.0 | mt_rand fue actualizado para utilizar la versión corregida, correcta, del algoritmo Twister Mersenne. Para volver al comportamiento anterior, utilice mt_srand con MT_RAND_PHP como segundo parámetro. |
Ejemplos#
Ejemplo con mt_rand
<?php
echo mt_rand(), "\n";
echo mt_rand(), "\n";
echo mt_rand(5, 15), "\n";
?>
Resultado del ejemplo anterior es similar a:
1604716014
1478613278
6
Notas#
[!WARNING] El rango
minmaxdebe estar dentro del rangomt_getrandmax. es decir, (max-min) \<=mt_getrandmaxde lo contrario,mt_randpuede devolver números aleatorios de menor calidad de lo que debería.
Véase también#
mt_srand, mt_getrandmax, random_int, random_bytes