Какой был бы самый элегантный способ получить случайное логическое значение true / false в PHP?
Я могу думать:
$value = (bool)rand(0,1);
Но действительно ли литье целого числа в boolean приносит какие-либо недостатки?
Или это «официальный» способ сделать это?
Если вы не хотите иметь булево произношение (не то, чтобы в этом что-то не так), вы можете легко сделать его логическим следующим образом:
$value = rand(0,1) == 1;
В принципе, если случайное значение равно 1
, дайте true
, иначе false
. Конечно, значение 0
или 1
уже действует как логическое значение; так это:
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