从php中的2个数字范围生成一个随机数


Generate a random number from 2 ranges of numbers in php

我当前的代码生成介于34和76之间的116个随机数,并将它们放入一个名为$common的数组中。

for($i = 0; $i < 116; $i++){
    $common[] = mt_rand(34, 76);
}

有可能从两组数字中生成一个随机数吗?例如,我想让它选择116个介于1-22和34-76之间的随机数。

1。有一种方法:

for($i = 0; $i < 116; $i++){
    $common[] = array(mt_rand(1, 22), mt_rand(34, 76))[mt_rand(0, 1)];
}
  • 创建一个由两个随机数组成的数组,每个范围一个
  • 随机选取数组索引0或1

2.我很无聊,还有一个:

$range = array_merge(range(1, 22), range(34, 76));
for($i = 0; $i < 116; $i++){
    $common[] = $range[array_rand($range)];
}
  • 创建两个范围内的数字数组
  • 循环并从范围中随机选择

在第二个示例中,您也可以使用:

$common[] = $range[mt_rand(0, count($range)-1)];

3.我在等午饭,所以这里有另一个,类似于第一个:

for($i = 0; $i < 116; $i++){
    $common[] = mt_rand(0, 1) ? mt_rand(1, 22) : mt_rand(34, 76);
}
  • 如果随机假0,则从第一个范围生成
  • 如果随机真值为1,则从第二范围生成