生成范围内的唯一随机数
生成指定范围内的唯一随机数列表可能是一项具有挑战性的任务。一种方法是生成随机数并每次检查它们是否唯一。然而,这种方法对于大范围或大量随机数可能效率低下。
更优化的方法是创建所需范围内的数字数组,然后对数组进行打乱以随机化顺序。生成的数组将包含指定范围内的唯一随机数。
使用具有随机顺序的数字范围的数组:
$numbers = range(1, 20); shuffle($numbers);
在此代码中,范围(1, 20) 创建一个从 1 到 20 的数字数组。然后 shuffle() 函数会随机化数组中数字的顺序。当所需的随机数数量小于或等于数字范围时,此方法特别有用。
使用包装函数:
对于更复杂的场景,您可以创建一个包装函数,以最小值、最大值和所需数量的随机数作为输入:
function UniqueRandomNumbersWithinRange($min, $max, $quantity) { $numbers = range($min, $max); shuffle($numbers); return array_slice($numbers, 0, $quantity); }
This函数获取初始范围的数字,对它们进行打乱,然后使用 array_slice() 提取所需数量的随机数。
用法示例:
以下代码演示如何使用 UniqueRandomNumbersWithinRange()函数:
<?php print_r(UniqueRandomNumbersWithinRange(0, 25, 5)); ?>
结果:
Array ( [0] => 14 [1] => 16 [2] => 17 [3] => 20 [4] => 1 )
此代码生成一个由 5 个 0 到 25 之间的唯一随机数组成的数组。这些数字经过打乱以确保唯一性.
以上是如何高效生成特定范围内的唯一随机数列表?的详细内容。更多信息请关注PHP中文网其他相关文章!