PHP中的随机浮点数介于0和1之间

Goa*_*444 34 php random

如何在PHP中生成0到1之间的随机浮点数?

我正在寻找与Java相当的PHP Math.random().

Den*_*ret 36

您可以使用标准函数:lcg_value().

这是rand()文档中给出的另一个函数:

// auxiliary function
// returns random number with flat distribution from 0 to 1
function random_0_1() 
{
    return (float)rand() / (float)getrandmax();
}
Run Code Online (Sandbox Code Playgroud)

  • 在PHP 4和5中,`mt_rand()`比`rand()`更受欢迎,因为它们会产生更多的随机值.`return(float)mt_rand()/(float)mt_getrandmax();` (11认同)
  • 在PHP 7.1+中,`rand`现在是`mt_rand`的别名 (3认同)

Pie*_*ouw 17

文档示例:

function random_float ($min,$max) {
   return ($min+lcg_value()*(abs($max-$min)));
}
Run Code Online (Sandbox Code Playgroud)

  • +1 这是一种更通用的方法,它将返回由给定的最小和最大浮点值限制的随机浮点值。 (3认同)

Yar*_*sur 6

class SomeHelper
{
     /**
     * Generate random float number.
     *
     * @param float|int $min
     * @param float|int $max
     * @return float
     */
    public static function rand($min = 0, $max = 1)
    {
        return ($min + ($max - $min) * (mt_rand() / mt_getrandmax()));
    }
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*ini 6

rand(0,1000)/1000 returns:
0.348 0.716 0.251 0.459 0.893 0.867 0.058 0.955 0.644 0.246 0.292
Run Code Online (Sandbox Code Playgroud)

或使用更大的数字(如果您想在小数点后增加位数)