產生PHP隨機數的幾種方法

來源:互聯網
上載者:User
下面這種方式是我經常使用的,比較人性化

/** * 產生隨機字串 * @param int       $length  要產生的隨機字串長度 * @param string    $type    隨機碼類型:0,數字+大寫字母;1,數字;2,小寫字母;3,大寫字母;4,特殊字元;-1,數字+大小寫字母+特殊字元 * @return string */function randCode($length = 5, $type = 0) {    $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");    if ($type == 0) {        array_pop($arr);        $string = implode("", $arr);    } else if ($type == "-1") {        $string = implode("", $arr);    } else {        $string = $arr[$type];    }    $count = strlen($string) - 1;    for ($i = 0; $i < $length; $i++) {        $str[$i] = $string[rand(0, $count)];        $code .= $str[$i];    }    return $code;}


產生定長隨機數:

function generate_code($length = 4) {         return rand(pow(10,($length-1)), pow(10,$length)-1); }

下面跟上面的效果一樣,只是寫法不一樣而已。

function generate_code($length = 4) {         $min = pow(10 , ($length - 1));         $max = pow(10, $length) - 1;         return rand($min, $max); }

如:

echo generate_code(5);//輸出結果: 56482

再重新整理一次,所以數字和順序都會變動。

以上這兩種代碼比較簡潔,但也只能產生數字,追求代碼簡潔的可以使用

$arr=range(1,10); shuffle($arr); foreach($arr as $values) {       echo $values.","; } //輸出結果:10,5,7,8,6,2,9,4,1,3,1

這種主要是靠php的內建函數range()來產生,產生兩個參數範圍的隨機數,而且他們是可以產生多組數字,這種就比較呆板了,而且不是都放在方法裡面,不過大家可以根據需求來使用。


以下這種跟上面這種沒多大區別,只是產生的方法不太一樣,主要是靠array_unique函數來產生。

$arr=array(); while(count($arr)<10) {       $arr[]=rand(1,10);       $arr=array_unique($arr); } echo implode(" ",$arr);

其他的產生方法我在這裡就不多說了,我們只要記住常用的,而且效率比較高的幾種就行了,我們在開發的過程中,可以根據需求來寫適合我們自己的php隨機數函數。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.