我需要得到一个介于
之间的随机数0 - 80
和
120 - 200
我可以
$n1 = rand(0, 80);
$n2 = rand(120, 200);
但是我需要在 n1
和 n2
之间做出选择。做不到
$n3 = rand($n1, $n2)
因为这可能会给我一个介于 80 - 120
之间的数字,我需要避免。
如何解决?
最佳答案
由于两个范围的大小不同(即使只有 1 个数字),为了确保良好的随机分布,您需要这样做:
$random = rand( 0, 200 - 39 );
if ($random>=120-39) $random+=39;
最快的方法。 :)
它的工作方式是假装它是一个单一的范围,如果它最终选择了第一个范围以上的数字,我们会增加它以适应第二个范围。这确保了完美的传播。
关于php - 如何从 2 个不同的数字范围中选择 1 个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272481/