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

pep*_*epe 5 php random

我需要得到一个介于两者之间的随机数

0 - 80
Run Code Online (Sandbox Code Playgroud)

120 - 200
Run Code Online (Sandbox Code Playgroud)

我可以

$n1 = rand(0, 80);
$n2 = rand(120, 200);
Run Code Online (Sandbox Code Playgroud)

但后来我需要在n1和之间做出选择n2.无法做到

 $n3 = rand($n1, $n2)
Run Code Online (Sandbox Code Playgroud)

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

怎么解决这个?

Dan*_*dux 8

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

$random = rand( 0, 200 - 39 );
if ($random>=120-39) $random+=39;
Run Code Online (Sandbox Code Playgroud)

最快的方法.:)

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


Thi*_*ter 5

由于两个范围具有相同的大小,因此您可以简单地使用它rand(0, 1)来确定要使用的范围.

$n = rand(0, 1) ? rand(0, 80) : rand(120, 200);
Run Code Online (Sandbox Code Playgroud)