0和1.0之间的PHP随机浮点数[重复](Random float number between 0

2019-07-17 19:53发布

可能重复:
在PHP随机浮点

是有可能创建0和1.0例如0.4之间的随机浮点数,0.8等等我用兰特但是它只接受整数。

Answer 1:

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



Answer 2:

怎么样简单地除以10,?

$randomFloat = rand(0, 10) / 10;
var_dump($randomFloat);

//eg. float(0.7)


Answer 3:

$v = mt_rand() / mt_getrandmax();

将这样做。


如果你只想要一个小数位(比如从问题的例子)刚round()你得到的价值...

$v = round( $v, 1 );

...或10计算0和100和除法之间的数:

$v = mt_rand( 0, 100 ) / 10;


Answer 4:

根据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兰特(),并有一个可怕的实现。 我想改变我的答案,而不必重复别人已经说了,现在我们在这里。



Answer 5:

这个怎么样简单的解决方案:

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


Answer 6:

试试这个

// 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);
}


Answer 7:

投浮动*和除以getrandmax()


*看来,中投是在PHP中的任意类型戏法规则是不必要的。 这将是在其他语言中,虽然。



文章来源: Random float number between 0 and 1.0 php [duplicate]