Random\Engine::generate
En esta página
Random\Engine::generate
Genera aleatoriedad
Descripción#
public Random\Engine::generate(): string
```php
Retorna aleatoriedad y avanza el estado del algoritmo en un paso.
La aleatoriedad está representada por una cadena binaria que contiene octetos aleatorios. Esta representación permite interpretar sin ambigüedad los bits aleatorios generados por el algoritmo, por ejemplo para tener en cuenta los diferentes tamaños de salida utilizados por los distintos algoritmos.
Los algoritmos que operan nativamente sobre valores enteros deben retornar el entero con los octetos en orden little-endian, por ejemplo utilizando la función `pack` con el código de formato `P`. La interfaz de alto nivel proporcionada por el `Random\Randomizer` interpretará los octetos aleatorios retornados como enteros no signados little-endian si se requiere una representación numérica.
Se recomienda encarecidamente que cada bit de la cadena retornada sea seleccionado de manera uniforme e independiente, ya que ciertas aplicaciones requieren aleatoriedad a nivel de bits para funcionar correctamente. Por ejemplo, los generadores congruenciales lineales generan a menudo aleatoriedad de menor calidad para los bits de menor peso del valor entero retornado y por lo tanto no serían adecuados para aplicaciones que requieren aleatoriedad a nivel de bits.
## Parámetros
Esta función no contiene ningún parámetro.
## Valores devueltos
Una cadena no vacía que contiene octetos aleatorios.
> [!NOTE]
> El `Random\Randomizer` utiliza internamente enteros no signados de 64 bits. Si la cadena retornada contiene más de 64 bits (8 octetos) de aleatoriedad, los octetos excedentes serán ignorados. Otras aplicaciones pueden ser capaces de procesar más de 64 bits a la vez.
## Errores/Excepciones
- Si la generación de aleatoriedad falla, una `Random\RandomException` debe ser emitida. Cualquier otra `Exception` emitida durante la generación debería ser capturada y envuelta en una `Random\RandomException`.
- Si la cadena retornada está vacía, una `Random\BrokenRandomEngineError` será emitida por el `Random\Randomizer`.
- Si el algoritmo implementado está fuertemente sesgado, una `Random\BrokenRandomEngineError` puede ser emitida por el `Random\Randomizer` para evitar bucles infinitos si un muestreo por rechazo es necesario para retornar resultados no sesgados.
## Ejemplos
Ejemplo de `Random\Engine::generate`
```php
El ejemplo anterior mostrará:
Número afortunado: 4