我需要得到一个介于两者之间的随机数
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我需要避免的数字.
怎么解决这个?
由于两个范围都有不同的大小(即使只有1个数字),为了确保良好的随机传播,您需要这样做:
$random = rand( 0, 200 - 39 );
if ($random>=120-39) $random+=39;
Run Code Online (Sandbox Code Playgroud)
最快的方法.:)
它的工作方式是假装它是一个单一的范围,如果它最终选择一个高于第一个范围的数字,我们将它增加到适合第二个范围.这确保了完美的传播.
由于两个范围具有相同的大小,因此您可以简单地使用它rand(0, 1)来确定要使用的范围.
$n = rand(0, 1) ? rand(0, 80) : rand(120, 200);
Run Code Online (Sandbox Code Playgroud)