溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php如何生成隨機(jī)數(shù)

發(fā)布時(shí)間:2021-03-04 09:41:00 來(lái)源:億速云 閱讀:166 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹php如何生成隨機(jī)數(shù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

php生成隨機(jī)數(shù)的方法非常簡(jiǎn)單,因?yàn)閜hp內(nèi)部為我們提供了現(xiàn)成的隨機(jī)數(shù)方法。因此我們并不需要進(jìn)行額外配置,只需要調(diào)用內(nèi)部方法即可。

php隨機(jī)數(shù)函數(shù)如下:

一、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ù)也不變

二、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ì)包含英文字母。

三、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ù)。

以上是“php如何生成隨機(jī)數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI