首頁  >  文章  >  後端開發  >  產生PHP隨機數的幾種方法

產生PHP隨機數的幾種方法

高洛峰
高洛峰原創
2016-10-21 10:06:411413瀏覽

下面這種方式是我常用的,比較人性化

/**
 * 生成随机字符串
 * @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隨機數字函數。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn