mt_rand rand

PHP函数rand和mt_rand
  
mt_rand() 比rand() 快四倍
  
  很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister (马其塞旋转) 中已知的特性作为随机数发生器,mt_rand() 可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

mt_rand()是更好地随机数生成器,因为它跟rand()相比播下了一个更好地随机数种子;而且性能上比rand()快4倍



rand()和mt_rand()作用都是产生一个随机整数,都有两种使用形式:



1.int rand(void) / int mt_rand(void)
2.int rand(int $min, int $max) / int mt_rand($min, $max)
对第一种形式:
rand()产生的随机数为0到getrandmax()之间
mt_rand()产生的随机数为0到mt_getrandmax()之间



mt_getrandmax()所表示的数值范围也更大



对第二种形式:
rand()产生从min到min到max之间的随机数
mt_rand()产生从min到min到max之间的随机数



为什么php手册上说mt_rand()比rand()快4倍呢?



这是因为mt_rand()使用的Mersenne Twister algorythm是1997的事,所以在10年前,和rand()在速度上的差异是(4倍),自2004年,rand()已经开始使用algorythm,所以现在它们速度上没有太大的区别.


Category lang