思路:將生成的隨機數存入數組,再在數組中去除重復的值,即可生成一定數量的不重復隨機數。
程序:
<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定數量的不重復隨機數
* $min 和 $max: 指定隨機數的范圍
* $num: 指定生成數量
*/
function unique_rand($min,$max,$num){
$count = 0;
$return_arr = array();
while($count < $num){
$return_arr[] = mt_rand($min,$max);
$return_arr = array_flip(array_flip($return_arr));
$count = count($return_arr);
}
shuffle($return_arr);
return $return_arr;
}
補充說明:
1、生成隨機數使用了mt_rand()函數,這個函數比rand()函數快4倍;
2、去除數組重復值時采用了“翻翻法”,就是用array_flip()把數組的key和value交換兩次。比用array_unique()快很多。
