PHP內(nèi)置函數(shù)生成隨機(jī)數(shù)實(shí)例
1. rand函數(shù)
rand() 函數(shù)可以不加任何參數(shù),就可以生成隨機(jī)整數(shù)。如果要設(shè)置隨機(jī)數(shù)范圍,可以在函數(shù)中設(shè)置 min 和 max 的值。如果需要生成隨機(jī)數(shù)的種子,使用 srand 函數(shù)配置。
echo rand(); // 生成 0~RAND_MAX 之間的隨機(jī)數(shù),Windows 系統(tǒng)下 RAND_MAX 的值為 32767,RAND_MAX 可以用函數(shù) getrandmax() 獲得 echo rand(1000000, 9999999); // 生成 1000000~9999999 之間的隨機(jī)數(shù) $seed = time(); // 使用時(shí)間作為種子源 srand($seed); // 播下隨機(jī)數(shù)發(fā)生器種子 echo rand(); // 根據(jù)種子生成 0~32768 之間的隨機(jī)數(shù)。如果 $seed 值固定,則生成的隨機(jī)數(shù)也不變 echo rand(1000000, 9999999); // 根據(jù)種子生成 1000000~9999999 之間的隨機(jī)數(shù)。如果 $seed 值固定,則生成的隨機(jī)數(shù)也不變
2. mt_rand函數(shù)
mt_rand() 是使用 Mersenne Twister 算法返回隨機(jī)整數(shù),與 rand() 函數(shù)的主要區(qū)別是:mt_rand()產(chǎn)生隨機(jī)數(shù)值的平均速度比 libc 提供的 rand() 快四倍,并且播種函數(shù)使用mt_srand(),而不是srand()。雖然有這點(diǎn)區(qū)別,但是它們的使用方法還是相似的,如下:
echo mt_rand(); // 生成 0~RAND_MAX 之間的隨機(jī)數(shù),Windows 系統(tǒng)下 RAND_MAX 的值為 2147483647(與rand()中的 RAND_MAX 不同),RAND_MAX 可以用函數(shù) mt_getrandmax() 獲得 echo mt_rand(1000000, 9999999); // 生成 1000000~9999999 之間的隨機(jī)數(shù),不受系統(tǒng) RAND_MAX 影響 $seed = time(); // 使用時(shí)間作為種子源 mt_srand($seed); // 播下隨機(jī)數(shù)發(fā)生器種子 echo rand(); // 根據(jù)種子生成 0~RAND_MAX 之間的隨機(jī)數(shù),如果 $seed 值固定,則生成的隨機(jī)數(shù)也不變 echo rand(1000000, 9999999); // 根據(jù)種子生成 1000000~9999999 之間的隨機(jī)數(shù),如果 $seed 值固定,則生成的隨機(jī)數(shù)也不變
說(shuō)明:rand() 和 mt_rand() 兩個(gè)函數(shù)生成的隨機(jī)數(shù)都是整數(shù),不會(huì)包含英文字母。
3. uniqid函數(shù)
uniqid() 函數(shù)基于以微秒計(jì)的當(dāng)前時(shí)間,生成一個(gè)唯一的 ID。默認(rèn)生成ID的長(zhǎng)度為13位或者23位,由英文字母和數(shù)字組成。uniqid() 函數(shù)有兩個(gè)參數(shù),格式如下:
uniqid(prefix,more_entropy)
其中,
prefix:生成ID的前綴
more_entropy:是否添加額外的熵
如下的程序,
echo uniqid(); // 生成13位字符串,如:55f540e273e93 echo uniqid('one.'); // 生成前綴為one.加13位隨機(jī)字符的字符串,如:one.55f540e273e93 echo uniqid('two.', true); // 生成前綴為two.加23位隨機(jī)字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707
說(shuō)明:由于基于系統(tǒng)時(shí)間,通過(guò)該函數(shù)生成的 ID 不是最佳的。如需生成絕對(duì)唯一的 ID,請(qǐng)使用 md5() 函數(shù)。
- MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))
- 自學(xué)MySql內(nèi)置函數(shù)知識(shí)點(diǎn)總結(jié)
- MySQL高效模糊搜索之內(nèi)置函數(shù)locate instr position find_in_set使用詳解
- PHP不使用內(nèi)置函數(shù)實(shí)現(xiàn)字符串轉(zhuǎn)整型的方法示例
- PHP使用內(nèi)置函數(shù)生成圖片的方法詳解
- 幾個(gè)實(shí)用的PHP內(nèi)置函數(shù)使用指南
- PHP通過(guò)內(nèi)置函數(shù)memory_get_usage()獲取內(nèi)存使用情況
- MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之內(nèi)置函數(shù)
相關(guān)文章
tp5(thinkPHP5)框架數(shù)據(jù)庫(kù)Db增刪改查常見(jiàn)操作總結(jié)
這篇文章主要介紹了tp5(thinkPHP5)框架數(shù)據(jù)庫(kù)Db增刪改查常見(jiàn)操作,結(jié)合實(shí)例形式總結(jié)分析了thinkPHP5框架數(shù)據(jù)庫(kù)的增刪改查常見(jiàn)操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-01-01詳解PHP中instanceof關(guān)鍵字及instanceof關(guān)鍵字有什么作用
這篇文章主要介紹了PHP中instanceof關(guān)鍵字詳解及instanceof關(guān)鍵字有什么作用的相關(guān)資料,需要的朋友可以參考下2015-11-11使用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口
本文給大家分享的是使用thinkphp框架開(kāi)發(fā)移動(dòng)端接口的2種方法,一種是開(kāi)發(fā)API,另外一種是實(shí)現(xiàn)移動(dòng)端訪問(wèn)自動(dòng)切換移動(dòng)主題模板,從而實(shí)現(xiàn)偽app訪問(wèn),下面我們就來(lái)詳細(xì)看下如何實(shí)現(xiàn)吧。2015-08-08php側(cè)拉菜單 漂亮,可以向右或者向左展開(kāi),支持FF,IE
其中menu UL UL的left或者right控制向右或者向左顯示子菜單2009-10-10CodeIgniter開(kāi)發(fā)實(shí)現(xiàn)支付寶接口調(diào)用的方法示例
這篇文章主要介紹了CodeIgniter開(kāi)發(fā)實(shí)現(xiàn)支付寶接口調(diào)用的方法,結(jié)合實(shí)例形式分析了CodeIgniter開(kāi)發(fā)支付寶接口的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-11-11thinkPHP批量刪除的實(shí)現(xiàn)方法分析
這篇文章主要介紹了thinkPHP批量刪除的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP實(shí)現(xiàn)批量刪除數(shù)據(jù)的數(shù)據(jù)庫(kù)及模板操作相關(guān)技巧,需要的朋友可以參考下2016-11-11