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

时间:2016-05-13 16:45:54

标签: php

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

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

是否可以从2组数字中生成随机数?例如,我想让它在1-22和34-76之间选择116个随机数。

1 个答案:

答案 0 :(得分:3)

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);
}
  • 如果随机falsey 0则从第一个范围生成
  • 如果随机truthy 1然后从第二范围生成