Home > Article > Backend Development > PHP randomly generates random numbers that are not in a range
Idea: Store the generated random numbers in an array, and then remove duplicate values in the array to generate a certain number of non-repeating random numbers.
In PHP website development, sometimes we need to generate a certain number of non-repeating random numbers within a specified range. How to specifically design this function to generate random numbers? We can store randomly generated numbers into an array, but by removing duplicate values while storing them, a certain number of non-repeating random numbers can be generated.
You can also store the values in the specified range into an array, then use shuffle($array) to disrupt the array, and then intercept a certain number of values. But the latter method will generate a larger array when the specified range of random numbers is too large.
The code for the first approach is given below, and the second approach is simpler.
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数,指定的范围内整数的数量必须 * 比要生成的随机数数量大 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand($min, $max); $return = array_flip(array_flip($return)); $count = count($return); } //打乱数组,重新赋予数组新的下标 shuffle($return); return $return; } //生成10个1到100范围内的不重复随机数 $arr = unique_rand(1, 100, 10); echo implode($arr, ","); ?>
Run results: 48,5,19,36,63,72,82,77,46,16
##Supplementary instructions:
The above is the detailed content of PHP randomly generates random numbers that are not in a range. For more information, please follow other related articles on the PHP Chinese website!