在PHP中获取随机布尔值true / false

Get random boolean true/false in PHP

在PHP中获得随机布尔值true / false的最优雅方法是什么?

我能想到的是:

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

但是将整数转换为布尔值会带来任何不利吗?

这是执行此操作的"官方"方法吗?


如果您不希望进行布尔类型转换(不是这有什么问题),可以轻松地将其设置为布尔值,如下所示:

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

基本上,如果随机值为1,则输出true,否则为false。当然,01的值已作为布尔值;所以这:

1
if (rand(0, 1)) { ... }

这是一个完全有效的条件,将按预期运行。

或者,您可以将mt_rand()用于生成随机数(这是对rand()的改进)。您甚至可以使用以下代码来达到openssl_random_pseudo_bytes()

1
$value = ord(openssl_random_pseudo_bytes(1)) >= 0x80;

更新

在PHP 7.0中,您将能够使用random_int(),它会生成加密安全的伪随机整数:

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

我只是使用

1
rand(0,1) < 0.5


出于完整性考虑,如果要在if条件下使用它,则无需强制转换,因为0被视为false

1
2
3
if (mt_rand(0,1)) {
  // whatever
}

注意:mt_randrand

快4倍

The mt_rand() function is a drop-in replacement for the older rand(). It uses a random number generator with known characteristics using the"Mersenne Twister", which will produce random numbers four times faster than what the average libc rand() provides.


php stan推荐

1
1 === random_int(0, 1)