>  기사  >  백엔드 개발  >  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

다시 새로고침하면 숫자와 순서가 변경됩니다.

위의 두 코드는 상대적으로 간단하지만 숫자만 생성할 수 있습니다. 코드 단순성을 추구하는 사람들은 주로 PHP 내장 함수 range()에 의존하는

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

을 사용할 수 있습니다. generate 는 두 매개변수 범위에서 난수를 생성하며 여러 숫자 세트를 생성할 수 있습니다. 이 유형은 더 엄격하며 모든 것이 메소드에 배치되지는 않지만 필요에 따라 사용할 수 있습니다.


다음은 생성 방법이 다르며 주로 array_unique 함수를 사용하여 생성한다는 점을 제외하면 위의 것과 크게 다르지 않습니다.

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

여기에서는 다른 생성 방법에 대해 자세히 설명하지 않겠습니다. 개발 과정에서 일반적으로 사용되는 효율적인 방법만 기억하면 됩니다. 우리만의 PHP 난수 함수.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.