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

标签 php random

我需要得到一个介于

之间的随机数
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;

最快的方法。 :)

它的工作方式是假装它是一个单一的范围,如果它最终选择了第一个范围以上的数字,我们会增加它以适应第二个范围。这确保了完美的传播。

关于php - 如何从 2 个不同的数字范围中选择 1 个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272481/

相关文章:

python - 如何从 DataFrame 中的每个组中采样不同数量的行

python - 为什么 random.shuffle(Array) 在多个线程中具有相同的返回值?我该如何纠正这个问题?

php - WordPress mysql 和函数

php - Google Cloud PostgreSQL 无法从服务器连接

php - 将 WAMP 升级到 MySQL 5.5?

javascript - 使用 php 的倒计时器来激活按钮点击

PHP PDO 最终查询

c - 播种 srand() 的最佳方法是什么?

java - 从随机长​​生成随机双

c# - iOS 版 SQLite - RANDOM() 不够好