在 PHP 中生成随机唯一编号数组
2022-08-30 20:48:25
我正在尝试从0-n生成一个随机数数组,然后随机播放(但请确保键和值不匹配)。
例如:
0 => 3
1 => 2
2 => 4
3 => 0
4 => 1
请注意,键和值都介于 0-4 之间,但没有一个键和值是相同的。
有什么想法吗?
我正在尝试从0-n生成一个随机数数组,然后随机播放(但请确保键和值不匹配)。
例如:
0 => 3
1 => 2
2 => 4
3 => 0
4 => 1
请注意,键和值都介于 0-4 之间,但没有一个键和值是相同的。
有什么想法吗?
更短的解决方案:
$random_number_array = range(0, 100);
shuffle($random_number_array );
$random_number_array = array_slice($random_number_array ,0,10);
print_r($random_number_array);
结果将是:
[0] => 53
[1] => 6
[2] => 16
[3] => 59
[4] => 8
[5] => 18
[6] => 62
[7] => 39
[8] => 22
[9] => 26
这将生成一个数组,其中包含从 0 到 100 的 10 个随机数:
array_map(function () {
return rand(0, 100);
}, array_fill(0, 10, null));
结果:
array(10) {
[0]=>
int(15)
[1]=>
int(97)
[2]=>
int(20)
[3]=>
int(64)
[4]=>
int(57)
[5]=>
int(38)
[6]=>
int(16)
[7]=>
int(53)
[8]=>
int(56)
[9]=>
int(22)
}
解释:
array_fill(0, 10, null)
将生成一个包含 10 个空项的数组array_map
将回调(第一个参数)应用于它接收的数组的每个项(第二个参数)。在此示例中,我们只为每个数组项返回一个随机数。如果您需要确保每个生成的数字都是唯一的:
$uniqueNumbers = 100;
$picked = [];
$uniqueRandomNumbers = array_map(function () use(&$picked, $uniqueNumbers) {
do {
$rand = rand(0, $uniqueNumbers);
} while(in_array($rand, $picked));
$picked[] = $rand;
return $rand;
}, array_fill(0, $uniqueNumbers, null));