生成隨機(jī)數(shù)時(shí)用了mt_rand() 函數(shù),這個(gè)函數(shù)生成隨機(jī)數(shù)的平均速度要比 rand() 快四倍。
去除數(shù)組中的重復(fù)值時(shí)用了“翻翻法”,就是用 array_flip() 把數(shù)組的 key 和 value 交換兩次,這種做法比用 array_unique() 快得多。
返回?cái)?shù)組前,先使用 shuffle() 為數(shù)組賦予新的鍵名,保證鍵名是 0-n 連續(xù)的數(shù)字,如果不進(jìn)行此步驟,可能在刪除重復(fù)值時(shí)造成鍵名不連續(xù),給遍歷帶來(lái)麻煩,實(shí)例代碼如下:
- /**
- * 生成一定數(shù)量的不重復(fù)隨機(jī)數(shù)
- * @param int $min ,$max指定隨機(jī)數(shù)的范圍
- * @param int $max
- * @param int $num 指定生成數(shù)量
- * @return array
- */
- 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;
- }
|
新聞熱點(diǎn)
疑難解答