PHP 8.3 新特性 - Random 新增 getFloat 和 nexFloat 方法

作者: 温新

图书: 【PHP 8.3 新特性】

阅读: 756

时间: 2025-06-15 07:31:46

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
请登录后再评论