php怎麼設定隨機數

藏色散人
發布: 2023-03-08 17:04:01
原創
6504 人瀏覽過

php設定隨機數的方法:1、透過「mt_rand()」產生隨機數;2、透過「make_password」方法產生隨機數;3、透過「get_password」方法產生隨機數;4、透過“getrandstr”方法產生隨機數。

php怎麼設定隨機數

本文操作環境:windows7系統、PHP8版,DELL G3電腦

文章目錄

  • #第一種方法用mt_rand()
  • 第二種方法(最快的)
  • 第三種取當時時間戳記
  • 第四種打亂字串
  • 5 //開始建立驗證碼(直接用函數生成,比較方便快捷)
  • #php mt_rand產生0~1隨機小數的效果比較

第一種方法用mt_rand()

function GetRandStr($length){
$str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$len=strlen($str)-1;
$randstr='';
for($i=0;$i<$length;$i++){
$num=mt_rand(0,$len);
$randstr .= $str[$num];
}
return $randstr;
}
$number=GetRandStr(6);
echo $number;
登入後複製

第二種方法(最快的)

function make_password( $length = 8 )
{
    // 密码字符集,可任意添加你需要的字符
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 
    'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's', 
    't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D', 
    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z', 
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', 
    '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_', 
    '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',', 
    '.', ';', ':', '/', '?', '|');
    // 在 $chars 中随机取 $length 个数组元素键名
    $keys = array_rand($chars, $length); 
    $password = '';
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }
    return $password;
}
登入後複製

第三種取當時時間戳記

function get_password( $length = 8 ) 
{
    $str = substr(md5(time()), 0, $length);//md5加密,time()当前时间戳
    return $str;
}
登入後複製

第四種打亂字串

function getrandstr(){
$str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
$randStr = str_shuffle($str);//打乱字符串
$rands= substr($randStr,0,6);//substr(string,start,length);返回字符串的一部分
return $rands;
}
登入後複製

#5 //開始建立驗證碼(直接用函數生成,比較方便快捷)

$code = rand(10000, 99999);
登入後複製

php mt_rand產生0~1隨機小數的效果比較

lcg_value說明

float lcg_value ( void )
lcg_value() 傳回範圍為(0, 1) 的一個偽隨機數。本函數組合了兩個週期為 2^31 - 85 和 2^31 - 249 的同餘產生器。本函數的週期等於這兩個質數的乘積。

傳回:範圍為 (0, 1) 的偽隨機數。

登入後複製

輸出:

0.11516515851995
0.064684551575297
0.68275174031189
0.55730746529099
0.70215008878091
登入後複製

兩種產生0~1隨機小數方法進行比較

執行時間比較

執行10萬次基於mt_rand()與mt_getrandmax()演算法的運行時間

登入後複製

輸出:run time 266.893148 ms 

執行10萬次lcg_value()的運行時間

登入後複製

輸出:run time 86.178064 ms

執行時間上比較,因為lcg_value()直接是php原生方法,而mt_rand()與mt_getrandmax()需要呼叫兩個方法,並需要進行計算,因此lcg_value()的執行時間大約快3倍。

隨機效果比較

基於mt_rand()與mt_getrandmax()演算法的隨機效果

=0.5){
            imagesetpixel($im, $x, $y, $color1);
        }else{
            imagesetpixel($im, $x, $y, $color2);
        }
    }
}
imagepng($im);
imagedestroy($im);
?>
登入後複製

lcg_value ()的隨機效果

=0.5){
            imagesetpixel($im, $x, $y, $color1);
        }else{
            imagesetpixel($im, $x, $y, $color2);
        }
    }
}
imagepng($im);
imagedestroy($im);
?>
登入後複製

推薦學習:《PHP影片教學

以上是php怎麼設定隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!