Obtenir aléatoire booléen true / false en PHP
quelle serait la façon la plus élégante d'obtenir un vrai/faux booléen aléatoire en PHP?
je pense:
$value = (bool)rand(0,1);
Mais le coulage d'un entier booléen apporter des inconvénients?
ou est-ce une façon "officielle" de le faire?
2 réponses
si vous ne voulez pas avoir un cast booléen (non pas qu'il y ait quelque chose de mal avec cela) vous pouvez facilement en faire un booléen comme ceci:
$value = rand(0,1) == 1;
en gros, si la valeur aléatoire est 1
, le rendement true
sinon false
. Bien sûr, une valeur de 0
ou 1
déjà lois comme valeur booléenne; donc ceci:
if (rand(0, 1)) { ... }
est une condition parfaitement valide et fonctionnera comme prévu.
Alternativement, vous pouvez utiliser mt_rand()
pour la génération de nombres aléatoires (c'est une amélioration par rapport à rand()
). Vous pouvez même aller aussi loin que openssl_random_pseudo_bytes()
avec ce code:
$value = ord(openssl_random_pseudo_bytes(1)) >= 0x80;
mise à Jour
en PHP 7.0 vous pourrez utiliser random_int()
, qui génère des entiers pseudo-aléatoires cryptographiquement sûrs:
$value = (bool)random_int(0, 1);