ホームページ  >  記事  >  バックエンド開発  >  PHP で乱数を生成するいくつかの方法

PHP で乱数を生成するいくつかの方法

高洛峰
高洛峰オリジナル
2016-10-21 10:06:411446ブラウズ

次の方法は私がよく使うもので、よりユーザーフレンドリーです

/**
 * 生成随机字符串
 * @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

もう一度更新すると、番号と順序が変わります。

上記の 2 つのコードは比較的単純ですが、数値を生成することしかできません。コードの単純さを追求する場合は、

$arr=range(1,10); 
shuffle($arr); 
foreach($arr as $values) {   
    echo $values.","; 
}
 
//输出结果:10,5,7,8,6,2,9,4,1,3,1
を使用できます。これは主に、2 つのパラメーター範囲で乱数を生成する PHP の組み込み関数 range() によって生成されます。また、複数の数値セットを生成できます。これはより厳密で、すべてがメソッドに配置されるわけではありませんが、ニーズに応じて使用できます。


次のものは上記のものとあまり変わりませんが、生成方法が異なり、主にarray_unique関数によって生成されます。

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

他の生成方法についてはここでは詳しく説明しません。開発プロセス中に、必要に応じて独自の乱数関数を作成できることだけを覚えておいてください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。