PHP 8.3 新特性 - Random 新增 getFloat 和 nexFloat 方法
hi,我是温新,一名 PHPer
PHP 8.3 中,Random 扩展增加了两个新方法:\Random\Randomizer::getFloat() 和 nextFloat() 。这两个方法用于生成随机浮点数。
Random\Randomizer::getFloat()
getFloat 用于生成一个指定范围内的随机浮点数。
public Random\Randomizer::getFloat(float $min, float $max, Random\IntervalBoundary $boundary = Random\IntervalBoundary::ClosedOpen): float
参数解释
- 
$min:生成的随机浮点数的最小值。 - 
$max:生成的随机浮点数的最大值。 
参数 \Random\IntervalBoundary 是一个枚举,如下:
enum IntervalBoundary {
    case ClosedOpen;
    case ClosedClosed;
    case OpenClosed;
    case OpenOpen;
}
IntervalBoundary 其含义如下
- 
IntervalBoundary::ClosedOpen:$min 可能会返回,$max 可能不会。 - 
IntervalBoundary::ClosedClosed:$min 和 $max 都可以返回。 - 
IntervalBoundary::OpenClosed:$min 不能返回,$max 可以返回。 - 
IntervalBoundary::OpenOpen:$min 和 $max 都不能返回。 
注意
- 
$max必须大于$min参数。否则会抛出\ValueError异常 - 
$min和$max必须是有限的。否则会抛出\ValueError异常 
案例如下
<?php
use Random\Randomizer;
$randomizer = new Randomizer();
echo $randomizer->getFloat(0.0, 1.0) . PHP_EOL;
echo $randomizer->getFloat(10, 50) . PHP_EOL;
输出结果
0.75820450768839
23.555650059691
Random\Randomizer::nextFloat()
nextFloat() 用于生成一个大于或等于 0.0 且小于 1.0 的随机浮点数。
public Random\Randomizer::nextFloat(): float
案例
<?php
$randomizer = new \Random\Randomizer();
for ($i = 0; $i < 10; $i++) {
    echo $randomizer->nextFloat() . PHP_EOL;
}
结果
0.33171132243057
0.9837437452255
0.77428565031214
0.33981816881044
0.39224912430971
0.738168247012
0.42110168197396
0.74848178132416
0.3482888387368
0.62862548523008
                请登录后再评论