程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 生成N個不重復的隨機數實例詳解

php 生成N個不重復的隨機數實例詳解

編輯:關於PHP編程

以前我給大家有講過生成多個隨機數,下面我再來介紹一篇關於php 生成N個不重復的隨機數實例,如果你有興趣大家可參考一下。

要實現此功能並非難事,但是讓我學習到很多。

 代碼如下 復制代碼

/** 

 * 生成一定數量的不重復隨機數 

 * @param int $min ,$max指定隨機數的范圍 

 * @param int $max 

 * @param int $num 指定生成數量 

 * @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; 

}

生成隨機數時用了 mt_rand() 函數。這個函數生成隨機數的平均速度要比 rand() 快四倍。
去除數組中的重復值時用了“翻翻法”,就是用 array_flip() 把數組的 key 和 value 交換兩次。這種做法比用 array_unique() 快得多。
返回數組前,先使用 shuffle() 為數組賦予新的鍵名,保證鍵名是 0-n 連續的數字。如果不進行此步驟,可能在刪除重復值時造成鍵名不連續,給遍歷帶來麻煩。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved