可能重复:
在PHP随机浮点
是有可能创建0和1.0例如0.4之间的随机浮点数,0.8等等我用兰特但是它只接受整数。
可能重复:
在PHP随机浮点
是有可能创建0和1.0例如0.4之间的随机浮点数,0.8等等我用兰特但是它只接受整数。
mt_rand() / mt_getrandmax();
Avoid the rand()
function, since it usually depends on the platform's C rand()
implementation, generally creating numbers with a very simple pattern. See this comment on php.net
怎么样简单地除以10,?
$randomFloat = rand(0, 10) / 10;
var_dump($randomFloat);
//eg. float(0.7)
$v = mt_rand() / mt_getrandmax();
将这样做。
如果你只想要一个小数位(比如从问题的例子)刚round()
你得到的价值...
$v = round( $v, 1 );
...或10计算0和100和除法之间的数:
$v = mt_rand( 0, 100 ) / 10;
根据PHP文档,如果你使用PHP 7你使用可以生成一个密码安全伪随机整数random_int
随着中说,这里的利用这产生两个数字之间的随机浮动的功能:
function random_float($min, $max) {
return random_int($min, $max - 1) + (random_int(0, PHP_INT_MAX - 1) / PHP_INT_MAX );
}
虽然random_int()比mt_rand更安全(),请记住,它的速度也较慢。
这个答案的先前版本建议你使用PHP兰特(),并有一个可怕的实现。 我想改变我的答案,而不必重复别人已经说了,现在我们在这里。
这个怎么样简单的解决方案:
abs(1-mt_rand()/mt_rand())
要么
/**
* Generate Float Random Number
*
* @param float $Min Minimal value
* @param float $Max Maximal value
* @param int $round The optional number of decimal digits to round to. default 0 means not round
* @return float Random float value
*/
function float_rand($Min, $Max, $round=0){
//validate input
if ($min>$Max) { $min=$Max; $max=$Min; }
else { $min=$Min; $max=$Max; }
$randomfloat = $min + mt_rand() / mt_getrandmax() * ($max - $min);
if($round>0)
$randomfloat = round($randomfloat,$round);
return $randomfloat;
}
试试这个
// Generates and prints 100 random number between 0.0 and 1.0
$max = 1.0;
$min = 0.0;
for ($i = 0; $i < 100; ++$i)
{
print ("<br>");
$range = $max - $min;
$num = $min + $range * (mt_rand() / mt_getrandmax());
$num = round($num, 2);
print ((float) $num);
}
投浮动*和除以getrandmax()