Solución:
Si no desea tener un elenco booleano (no es que haya nada de malo en eso), puede convertirlo fácilmente en un booleano como este:
$value = rand(0,1) == 1;
Básicamente, si el valor aleatorio es 1
, producir true
, de lo contrario false
. Por supuesto, un valor de 0
o 1
ya hechos como 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ías 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á utilizar random_int()
, que genera enteros pseudoaleatorios criptográficamente seguros:
$value = (bool)random_int(0, 1);
Yo uso un simple
rand(0,1) < 0.5
Solo para completar, si quieres úsalo en un if
condición, no hay necesidad de lanzar, ya que 0
se considera false
:
if (mt_rand(0,1)) {
// whatever
}
Nota: mt_rand
es 4 veces más rápido que rand
los
mt_rand()
La función es un reemplazo directo de la antigua.rand()
. Utiliza un generador de números aleatorios con características conocidas utilizando el “Mersenne Twister”, que producirá números aleatorios cuatro veces más rápido que lo que el libc promediorand()
proporciona.