如何在PHP中从1到100生成30个随机数

时间:2018-10-09 14:42:06

标签: php

我想从1到100生成30个随机数,并避免一个数字被生成两次。因此,例如,在30个随机数中,不会多次生成9。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

一种有效的方法可能是:

  • 您可以生成一个range的数字,范围是1到100。
  • 随机Shuffle数组。
  • 使用array_slice函数从随机数组中选择前30个值。

应为随机且不同的值。试试:

// Generate an array of numbers from 1 to 100
$numbers = range(1,100);

// Random shuffle the array
shuffle($numbers);

// Take first 30 values out of the array (it will be random and distinct)
$random_30 = array_slice($numbers, 0, 30);

答案 1 :(得分:0)

将数字相加直到30,每次使用in_arraymt_rand来获得1到100之间的未使用随机数。

$random_numbers = [];
while(count($random_numbers) < 30){
    do  {
        $random_number = mt_rand(1,100);    
    } while (in_array($random_number, $random_numbers));
    $random_numbers[] = $random_number;
}

var_dump($random_numbers);