is_true - php string to boolean
Obtener booleano aleatorio verdadero/falso en PHP (2)
¿Cuál sería la forma más elegante de obtener un booleano aleatorio verdadero / falso en PHP?
Puedo pensar en:
$value = (bool)rand(0,1);
Pero, ¿lanzar un número entero a boolean trae alguna desventaja?
¿O es esta una forma "oficial" de hacer esto?
Si no deseas tener un elenco booleano (no es que haya nada de malo en eso) puedes convertirlo fácilmente en un booleano como este:
$value = rand(0,1) == 1;
Básicamente, si el valor aleatorio es 1
, rinde true
, de lo contrario es false
. Por supuesto, un valor de 0
o 1
ya actúa como un valor booleano; así que esto:
if (rand(0, 1)) { ... }
Es una condición perfectamente válida y funcionará como se esperaba.
Alternativamente, puede usar mt_rand()
para la generación de números aleatorios (es una mejora sobre rand()
). Incluso podría ir tan lejos como openssl_random_pseudo_bytes()
con este código:
$value = ord(openssl_random_pseudo_bytes(1)) >= 0x80;
Actualizar
En PHP 7.0, podrá usar random_int()
, que genera enteros pseudoaleatorios criptográficamente seguros:
$value = (bool)random_int(0, 1);
Yo uso un simple
rand(0,1) < 0.5