PHPでランダムなブール値true/falseを取得する最もエレガントな方法は何ですか?
私は考えることができます:
$value = (bool)Rand(0,1);
しかし、整数をブールにキャストすることには欠点がありますか?
または、これはこれを行う「公式の」方法ですか?
ブール型のキャストを望まない場合(それが何か問題があるわけではない)、次のように簡単にブール型にすることができます。
_$value = Rand(0,1) == 1;
_
基本的に、ランダムな値が_1
_の場合、true
を返し、そうでない場合はfalse
を返します。もちろん、_0
_または_1
_の値は、ブール値として既にactsです;したがって、この:
_if (Rand(0, 1)) { ... }
_
完全に有効な状態であり、期待どおりに機能します。
あるいは、乱数生成に mt_Rand()
を使用できます(Rand()
よりも改善されています)。このコードでopenssl_random_pseudo_bytes()
まで移動できます:
_$value = ord(openssl_random_pseudo_bytes(1)) >= 0x80;
_
PHP 7.0では、暗号的に安全な擬似乱数整数を生成する random_int()
を使用できます。
_$value = (bool)random_int(0, 1);
_
私は単純に使用します
Rand(0,1) < 0.5