srand() 函数用于设置随机数生成器的种子,该种子会影响后续 rand() 函数生成的随机数序列。
srand() 或 mt_srand() 来给随机数发生器播种,因为 PHP 会自动在运行时完成。但为了重现特定的随机数序列,可以使用此函数。
srand(int $seed = 0): void
| 参数 | 描述 |
|---|---|
seed |
可选。任意整数作为种子值。如果省略或设为 0,PHP 会自动生成一个随机种子。 |
没有返回值(void)。
<?php
// 设置种子
srand(42);
// 生成几个随机数
echo rand() . "<br>";
echo rand() . "<br>";
// 再次设置相同种子,序列将重复
srand(42);
echo rand() . "<br>";
echo rand() . "<br>";
?>
输出(示例):
1385542585
123807456
1385542585
123807456
<?php
// 不设置种子,PHP 自动播种
echo rand() . "<br>";
echo rand() . "<br>";
// 也可以显式调用 srand() 不带参数,效果相同(自动播种)
srand();
echo rand() . "<br>";
?>
输出(随机,每次不同):
123456789
987654321
345678912
<?php
function generateTestData($seed, $count) {
srand($seed);
$data = [];
for ($i = 0; $i < $count; $i++) {
$data[] = rand(1, 100);
}
return $data;
}
$seed = 2024;
$numbers = generateTestData($seed, 5);
echo "使用种子 $seed 生成的 5 个随机数: " . implode(', ', $numbers);
?>
输出(每次运行相同):
使用种子 2024 生成的 5 个随机数: 45, 78, 12, 89, 33
srand()。手动播种主要用于需要重现相同随机数序列的场景(如测试、模拟)。srand(),会重置生成器状态,后续 rand() 将从新种子开始生成序列。rand() 使用 libc 随机数生成器,其种子范围可能有限。PHP 7.1 起 rand() 是 mt_rand() 的别名,使用 Mersenne Twister 算法。