如何从 1 个不同的数字范围中选择 2 个随机数


How to choose 1 random number from 2 different number ranges?

我需要得到一个介于

0 - 80

120 - 200

我能做到

$n1 = rand(0, 80);
$n2 = rand(120, 200);

但是我需要在n1n2之间做出选择.不能做

 $n3 = rand($n1, $n2)

因为这可能会给我一个我需要避免的80 - 120之间的数字。

如何解决这个问题?

由于两个范围的大小不同(即使只有 1 个数字),为了确保良好的随机分布,您需要这样做:

$random = rand( 0, 200 - 39 );
if ($random>=120-39) $random+=39;

最快的方法。 :)

其工作方式是假装它是一个范围,如果它最终选择一个高于第一个范围的数字,我们将其增加到第二个范围内。这确保了完美的传播。

由于

两个范围的大小相同,因此您只需使用rand(0, 1)来确定要使用的范围即可。

$n = rand(0, 1) ? rand(0, 80) : rand(120, 200);

PHP 也有一个名为 range 的新功能。 非常易于使用,可以在PHP手册中找到。

它允许您输入最小/最大数字以获取范围。

<?php
echo range(0, 1000);
?

不过,从技术上讲,您也可以输入自己的两个数字作为数字范围。

得到两个随机数$n 1$n 2

$n 1 = 兰德(0, 80);$n 2 = 兰特(120, 200);

定义名为 $n 3 的新数组

$n 3=数组();

使用 array_push() 函数将 $n 1 和 $n 2 添加到数组 $n 3

array_push($n 3,$n 1,$n 2);

使用 array_rand() 函数从数组 $n 3 中查找随机索引 $find_index

$find_index=array_rand($n 3,1);

显示结果

回声$n 3[$find_索引];