Ⅰ php中函數rand和mt_rand的區別比較
PHP函數rand和mt_rand
mt_rand()
比rand()
快四倍
很多老的
libc
的隨機數發生器具有一些不確定和未知的特性而且很慢。PHP
的
rand()
函數默認使用
libc
隨機數發生器。mt_rand()
函數是非正式用來替換它的。該函數用了
Mersenne
Twister
中已知的特性作為隨機數發生器,mt_rand()
可以產生隨機數值的平均速度比
libc
提供的
rand()
快四倍。
mt_rand()
比rand()
快四倍
mt_rand
—
生成更好的隨機數
(PHP
3
>=
3.0.6,
PHP
4,
PHP
5)
int
mt_rand
(
[int
min,
int
max]
)
很多老的
libc
的隨機數發生器具有一些不確定和未知的特性而且很慢。PHP
的
rand()
函數默認使用
libc
隨機數發生器。mt_rand()
函數是非正式用來替換它的。該函數用了
Mersenne
Twister(馬其塞旋轉)
中已知的特性作為隨機數發生器,它可以產生隨機數值的平均速度比
libc
提供的
rand()
快四倍。
如果沒有提供可選參數
min
和
max,mt_rand()
返回
0
到
RAND_MAX
之間的偽隨機數。
例如想要
5
到
15(包括
5
和
15)之間的隨機數,用
mt_rand(5,
15)。
注:
自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函數給隨機數生成器播種,現已自動完成。
rand
—
產生一個隨機整數
(PHP
3,
PHP
4,
PHP
5)
int
rand
(
[int
min,
int
max]
)
如果沒有提供可選參數
min
和
max,rand()
返回
0
到
RAND_MAX
之間的偽隨機整數。例如想要
5
到
15(包括
5
和
15)之間的隨機數,用
rand(5,
15)。
注:
在某些平台下(例如
Windows)RAND_MAX
只有
32768。如果需要的范圍大於
32768,那麼指定
min
和
max
參數就可以生成大於
RAND_MAX的數了,或者考慮用
mt_rand()
來替代之。
注:
自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函數給隨機數生成器播種,現已自動完成。
mt_rand定義和用法
mt_rand()
使用
Mersenne
Twister
演算法返回隨機整數。
語法
mt_rand(min,max)說明
如果沒有提供可選參數
min
和
max,mt_rand()
返回
0
到
RAND_MAX
之間的偽隨機數。例如想要
5
到
15(包括
5
和
15)之間的隨機數,用
mt_rand(5,
15)。
很多老的
libc
的隨機數發生器具有一些不確定和未知的特性而且很慢。PHP
的
rand()
函數默認使用
libc
隨機數發生器。mt_rand()
函數是非正式用來替換它的。該函數用了
Mersenne
Twister
中已知的特性作為隨機數發生器,它可以產生隨機數值的平均速度比
libc
提供的
rand()
快四倍。
提示和注釋
注釋:自
PHP
4.2.0
起,不再需要用
srand()
或
mt_srand()
函數給隨機數發生器播種,現在已自動完成。
注釋:在
3.0.7
之前的版本中,max
的含義是
range
。要在這些版本中得到和上例相同
5
到
15
的隨機數,簡短的例子是
mt_rand
(5,
11)。
例子
在本例中,我們會返回一些隨機數:
復制代碼
代碼如下:
<?php
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
輸出類似:
3150906288
513289678
35
Ⅱ php中如何使用隨機函數rand()生成一個數字驗證碼
如果要生成四位數字的驗證碼,則可以用函數:
$srand = rand(1000,9999);
會生成在1000到9999之間的隨機數字,如果要生成更多位數的數字,可以更改最小、最大值。
Ⅲ 求用php 隨機函數生成一個長度為20的全是數字的字元串
$str = '0123456789';
for($i=0; $i<20; $i++) {
$str .= $str{mt_rand(0, strlen($str))};
}
echo $str;