Mat*_*ood 46 php random floating-point integer
可能重复:
php中的Random Float
是否有可能创建一个介于0和1.0之间的随机浮点数,例如0.4,0.8等.我使用rand但它只接受整数.
Fra*_*ois 95
mt_rand() / mt_getrandmax();
Run Code Online (Sandbox Code Playgroud)
避免使用该rand()函数,因为它通常取决于平台的C rand()实现,通常使用非常简单的模式创建数字.在php.net上看到这条评论
h2o*_*ooo 25
简单地除以10怎么样?
$randomFloat = rand(0, 10) / 10;
var_dump($randomFloat);
//eg. float(0.7)
Run Code Online (Sandbox Code Playgroud)
$v = mt_rand() / mt_getrandmax();
Run Code Online (Sandbox Code Playgroud)
会这样做的.
如果您只想要一个小数位(如问题中的示例所示),只需要round()获得的值...
$v = round( $v, 1 );
Run Code Online (Sandbox Code Playgroud)
...或者计算0到100之间的数字并除以10:
$v = mt_rand( 0, 10 ) / 10;
Run Code Online (Sandbox Code Playgroud)
根据 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 );
}
Run Code Online (Sandbox Code Playgroud)
尽管 random_int() 比 mt_rand() 更安全,但请记住,它也更慢。
此答案的先前版本建议您使用 PHP rand(),并且实现方式很糟糕。我想在不重复其他人已经说过的内容的情况下更改我的答案,现在我们来了。
转换为 float *并除以getrandmax()。
| 归档时间: |
|
| 查看次数: |
80870 次 |
| 最近记录: |