PHP內置函數生成隨機數的方法彙總

PHP內部生成隨機數的方法相比其餘方法簡單,不須要額外配置,是生成隨機數的首選方案。php

1 rand函數

rand() 函數能夠不加任何參數,就能夠生成隨機整數。若是要設置隨機數範圍,能夠在函數中設置 min 和 max 的值。若是須要生成隨機數的種子,使用 srand 函數配置。html

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() 函數有兩個參數,格式以下:spa

uniqid(prefix,more_entropy)

其中,code

  • prefix:生成ID的前綴
  • more_entropy:是否添加額外的熵

以下的程序,htm

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

轉自:https://www.awaimai.com/216.htmlmd5

關注微信公衆號:lovephp

相關文章
相關標籤/搜索