如何在PHP中获得带有x个十进制数字的随机浮点值


How to get a random float with x decimal digits in PHP?

如何在PHP中获得x个十进制数字范围之间的随机浮点值?

例如,如何获得一个0到20之间有5位小数的随机浮点值?

Mark Baker建议的解决方案可能是最好的。此外,你不必硬编码这些大数字来提高可读性:

$min = 0;
$max = 20;
$decimals = 5;
$divisor = pow(10, $decimals);
$randomFloat = mt_rand($min, $max * $divisor) / $divisor;

我只是想知道你为什么需要正好5个小数。如果它只是用于演示,这意味着你将把它作为字符串输出,你可以使用这个解决方案:

$num = $min + lcg_value() * ($max - $min);
$randomFloat = sprintf("%+.5f", $num);

PHP函数lgc_value随机返回一个(0,1(范围内的(伪(随机浮点数。函数sprintf返回根据格式执行的字符串。%+.5f表示5位小数的浮点数。