Подтвердить что ты не робот

Получить случайное значение boolean true/false в PHP

Каким будет самый элегантный способ получить случайное значение boolean true/false в PHP?

Я могу думать:

$value = (bool)rand(0,1);

Но делает ли какое-то целое число логическим приложением каких-либо недостатков?

Или это "официальный" способ сделать это?

4b9b3361

Ответ 1

Если вы не хотите иметь логический листинг (а не что-то не так с этим), вы можете легко сделать его логическим следующим образом:

$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;

Update

В PHP 7.0 вы сможете использовать random_int(), который генерирует криптографически безопасные псевдослучайные целые числа:

$value = (bool)random_int(0, 1);

Ответ 2

Я использую просто

rand(0,1) < 0.5