本篇主要介紹PHP隨機函數的用法,有興趣的朋友參考下,希望對大家有幫助。
寫在前面
PHP語法特性及相關函數類別庫的經典用法,不一定是真正能實現四兩撥千斤頂的功效,但是掌握這些方法,可以在你的工作和學習上有一些幫助!
二、前言
PHP是常見的腳本語言,主要是因為其簡單易學,上手快,幾乎50%以上的Web程式都有PHP的身影(不完全統計)。 PHP為開發這提供了豐富的函數和API接口,這使得我們能夠非常方便地使用其強大的內建函數及擴充。
三、PHP隨機函數
PHP隨機函數主要有rand、mt_rand、array_rand,還有隨機「排列」(打亂順序)的函數shuffle、str_shuffle ,能夠產生唯一ID的uniqid。
1、rand產生隨機數:
<?php $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $count = strlen($base); $random = ''; for ($i=0; $i < 16; $i++) { $random.=$base[rand(0,$count-1)]; } echo $random; ?>
rand()函數是使用libc 的隨機數產生器產生隨機數的,一般較慢,且有不確定因素,建議使用mt_rand函數替代。
getrandmax()函數可以傳回rand函數能夠產生的最大的隨機數(我的系統為32767),所以在設定rand函數第二個參數時不要超高getrandmax的回傳值。
2、mt_rand產生隨機數:
<?php $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $count = strlen($base); $random = ''; for ($i=0; $i < 16; $i++) { $random.=$base[mt_rand(0,$count-1)]; } echo $random; ?>
很多舊的libc 的隨機數產生器具有一些不確定和未知的特性而且很慢。 PHP 的 rand() 函數預設使用 libc 隨機數產生器。 mt_rand() 函數是非正式用來取代它的。函數用了 » Mersenne Twister 中已知的特性作為隨機數字產生器,它可以產生隨機數值的平均速度比 libc 提供的 rand() 快四倍。強烈建議在開發過程中使用mt_rand函數取代rand。
如果沒有提供可選參數 min 和 max,mt_rand() 傳回 0 到 mt_getrandmax() 之間的偽隨機數。例如想要 3到 20(包括 3 和 20)之間的隨機數,用 mt_rand(3, 20)。
3、array_rand函數
<?php $base = 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'); $random = ''; for ($i=0; $i < 16; $i++) { $random.=$base[array_rand($base)]; } echo $random; ?>
array_rand傳回數組中隨機的鍵值,有點類似mt_rand()函數,其餘的沒什麼特殊的地方,靈活運用而已。
4、shuffle函數
<?php $base = 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'); if(shuffle($base)){ print_r($base); } ?>
shuffle函數是打亂一個陣列的序列,有點隨機的意思,這裡就放在隨機函數裡了。傳回值為bool值,相當於直接引用了原變數。
5、str_shuffle函數
<?php $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; echo str_shuffle($base); ?>
這裡str_shuffle的功能和shuffle的功能是類似的,唯一不同的是傳回值,str_shuffle的原字串是不變的。
6、uniqid函數
<?php echo uniqid(); //54f806528172f ?>
uniqid能夠產生唯一的字串,這個應用的範圍可以相當廣泛
四、總結
隨機函數幾乎是每種語言最基本的功能,PHP對於隨機函數的支援也不例外,這裡介紹了rand、mt_rand、array_rand、shuffle 、str_shuffle、uniqid函數的基本用法,更多可以結合實際應用靈活運用。
總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。
相關推薦:
以上是PHP隨機函數的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!