$a = floatval(0.0001);
$b = floatval(0.0009);
$c = rand($a,$b); // int(0);
如何从$a
到$b
花车获得兰特?
$
a和$b
的乘法不是解,因为我不知道点后的位数。
答案 0 :(得分:2)
来自this article:
在两个数字之间返回随机浮点数的优雅方法:
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
答案 1 :(得分:0)
您可以使用大于0的值创建随机数,并将其除去。
$a = 1;
$b = 9;
$c = rand($a, $b);
$c = $c / 10000;
答案 2 :(得分:0)
另一个解决方案是计算小数位数并对由此数字驱动的数字执行rand
:
function count_decimals($x) {
return strlen(substr(strrchr($x+"", "."), 1));
}
function random($min, $max, $precision = 0) {
$decimals = max(count_decimals($min), count_decimals($max)) + $precision;
$factor = pow(10, $decimals);
return rand($min*$factor, $max*$factor) / $factor;
}
var_dump(random(0.001, 0.009)); // 0.004
var_dump(random(0.001, 0.009, 1)); // 0.0046
var_dump(random(0.001, 0.009, 2)); // 0.00458
var_dump(random(0.001, 0.009, 5)); // 0.00458014
我添加了$precision
参数,以便您可以选择要在随机数中追加多少小数。