【发布时间】:2019-02-08 13:27:02
【问题描述】:
目前我正在使用以下脚本从给定范围生成随机数集,在本例中为 1-20。但是此代码生成的数字集可能不止一次具有相同的数字。我需要的是从给定范围内生成唯一的随机集。集合中不能重复任何数字,所有数字都应该使用一次。
所以在这种情况下,如果我想要 1-20 范围内的 5 个数字组,则将有 4 个组,每个数字将使用一次。或者如果我想要 4 个数字的集合,那么将有 5 个具有唯一随机数的集合。
基本上,我想从给定范围内获取所有具有唯一随机数的集合。
我怎样才能得到这个结果?
管理员注意:我查看了以前的帖子,虽然在各种语言中都有类似的问题,但在 php.ini 中没有类似的帖子。谢谢。
<form method="POST" action="">
<label for="Numbers">Numbers</label>
<input type="checkbox" id="sets" name="sets" value="numbersets"><br />
<p><input type="submit" value="submit"/></p>
</form>
<?php
function Numbers($min_number, $max_number, $amount_of_numbers)
{
$range = range($min_number, $max_number);
shuffle($range);
$numbers_array = array_slice($range, 0, $amount_of_numbers);
natsort($numbers_array);
return array_values($numbers_array);
}
if (isset($_POST['sets'])) {
echo "<h2>Sets</h2>";
$number_set = array();
for ($i = 1; $i <= 4; $i++) {
$number_set = Numbers(1, 20, 5);
echo implode(",", $number_set) . "<br />";
}
}
?>
【问题讨论】:
-
不太清楚。您希望将 X 个随机数分成 Y 个部分且没有重复?
-
是的,完全正确。谢谢。不过应该随机完成。
-
它总是可以被 Y 部分整除。不会有像 4 / 21 这样的情况。
标签: php