php產生隨機數有哪幾種方法

王林
發布: 2023-03-08 12:30:01
轉載
19420 人瀏覽過

php產生隨機數有哪幾種方法

php產生隨機數字的方法非常簡單,因為php內部為我們提供了現成的隨機數字方法。因此我們並不需要進行額外配置,只需要呼叫內部方法。

php隨機數函數如下:

一、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 值固定,则生成的随机数也不变
登入後複製

二、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() 兩個函數產生的隨機數都是整數,不會包含英文字母。

(相關推薦:php教學

三、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() 函數。

學習影片分享:php影片教學

原文連結:https://www.awaimai.com/216.html

#

以上是php產生隨機數有哪幾種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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