PHP efficiently generates m non-repeating random numbers within the range of n (m
##Note: It is also mentioned in the book "Programming Pearls", the title is "How to efficiently generate m non-repeating random numbers in the range of n (mGetting Started with PHP Programming To master )
This algorithm very cleverly takes the position of the random number (the subscript of the array) instead of taking the random number itself. Every time a random number is taken, it is Exclude it from the value range, and only the remaining numbers will be selected next time. The selection of random numbers can be completed in one traversal, which is quite efficient.
function rand_num($num='200'){ for($i=0;$i<$num;$i++){ $n[$i] = $i; } for($i=0;$i<$num;$i++){ $rand = mt_rand($i,$num-1); //数组 随机数交换下标 if($n[$i] == $i){ $n[$i] = $n[$rand]; $n[$rand] = $i; } } }
The above is the detailed content of php random number does not repeat. For more information, please follow other related articles on the PHP Chinese website!