PHP内置函数生成随机数的方法汇总
生活随笔
收集整理的這篇文章主要介紹了
PHP内置函数生成随机数的方法汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PHP內部生成隨機數的方法相比其他方法簡單,不需要額外配置,是生成隨機數的首選方案。
1?rand函數
rand()?函數可以不加任何參數,就可以生成隨機整數。如果要設置隨機數范圍,可以在函數中設置 min 和 max 的值。如果需要生成隨機數的種子,使用 srand 函數配置。
echo rand(); // 生成 0~RAND_MAX 之間的隨機數,Windows 系統下 RAND_MAX 的值為 32767,RAND_MAX 可以用函數 getrandmax() 獲得 echo rand(1000000, 9999999); // 生成 1000000~9999999 之間的隨機數$seed = time(); // 使用時間作為種子源 srand($seed); // 播下隨機數發生器種子 echo rand(); // 根據種子生成 0~32768 之間的隨機數。如果 $seed 值固定,則生成的隨機數也不變 echo rand(1000000, 9999999); // 根據種子生成 1000000~9999999 之間的隨機數。如果 $seed 值固定,則生成的隨機數也不變2 mt_rand函數
mt_rand() 是使用 Mersenne Twister 算法返回隨機整數,與 rand() 函數的主要區別是:
mt_rand()產生隨機數值的平均速度比 libc 提供的 rand() 快四倍,并且播種函數使用mt_srand(),而不是srand()。雖然有這點區別,但是它們的使用方法還是相似的,如下:
echo mt_rand(); // 生成 0~RAND_MAX 之間的隨機數,Windows 系統下 RAND_MAX 的值為 2147483647(與rand()中的 RAND_MAX 不同),RAND_MAX 可以用函數 mt_getrandmax() 獲得 echo mt_rand(1000000, 9999999); // 生成 1000000~9999999 之間的隨機數,不受系統 RAND_MAX 影響$seed = time(); // 使用時間作為種子源 mt_srand($seed); // 播下隨機數發生器種子 echo rand(); // 根據種子生成 0~RAND_MAX 之間的隨機數,如果 $seed 值固定,則生成的隨機數也不變 echo rand(1000000, 9999999); // 根據種子生成 1000000~9999999 之間的隨機數,如果 $seed 值固定,則生成的隨機數也不變說明:rand() 和 mt_rand() 兩個函數生成的隨機數都是整數,不會包含英文字母。
3 uniqid函數
uniqid() 函數基于以微秒計的當前時間,生成一個唯一的 ID。默認生成ID的長度為13位或者23位,由英文字母和數字組成。uniqid() 函數有兩個參數,格式如下:
uniqid(prefix,more_entropy)其中,
- prefix:生成ID的前綴
- more_entropy:是否添加額外的熵
如下的程序,
echo uniqid(); // 生成13位字符串,如:55f540e273e93 echo uniqid('one.'); // 生成前綴為one.加13位隨機字符的字符串,如:one.55f540e273e93 echo uniqid('two.', true); // 生成前綴為two.加23位隨機字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707說明:由于基于系統時間,通過該函數生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函數。
轉自:https://www.awaimai.com/216.html
關注微信公眾號:lovephp
轉載于:https://www.cnblogs.com/ldj3/p/9289395.html
總結
以上是生活随笔為你收集整理的PHP内置函数生成随机数的方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断数据是否为空
- 下一篇: php 去除中间空格