php 隨機數

方案1php

<?php 
    $num = range(0,10);//利用range()函數產生一個0到10的數組
    shuffle($num);//利用shuffle()函數將產生的$num數組隨機打亂順序
    for ($i=0; $i < 5; $i++) {//選取數組前5個,即隨機 
        echo $num[$i]."&nbsp";
    }
 ?>

方案2數組

function randomkeys1($len=8,$format='NUMBER'){
    $is_abc = $is_numer = 0;
    $password = $tmp ='';
    switch($format){
        case 'ALL':
            $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
            break;
        case 'CHAR':
            $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
            break;
        case 'NUMBER':
            $chars='0123456789';
            break;
        default :
            $chars='0123456789';
            break;
    }
    mt_srand((double)microtime()*1000000*getmypid());
    while(strlen($password)<$len){
        $tmp =substr($chars,(mt_rand()%strlen($chars)),1);
        if(($is_numer <> 1 && is_numeric($tmp) && $tmp > 0 )|| $format == 'CHAR'){
            $is_numer = 1;
        }
        if(($is_abc <> 1 && preg_match('/[a-zA-Z]/',$tmp)) || $format == 'NUMBER'){
            $is_abc = 1;
        }
        $password.= $tmp;
    }
    if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){
        $password = randomkeys($len,$format);
    }
    return $password;
}

兩種方案均可以產生隨機數dom

方案1 在for循環的瞬間產生的隨機數重複率很低,測試100個之內無重複函數

方案2 在for循環的瞬間產生的隨機數重複率很高測試

相關文章
相關標籤/搜索