比较和分析性能的随机函数mt_rand()和兰德()在PHP
在本文中,对mt_rand性能()和RAND()在PHP中随机函数进行比较和分析。分享给你供你参考。具体分析如下:在PHP中,mt_rand()和兰德()功能可以生成一个纯数字随机。它们都需要我们建立种子数据并生成它们。然后mt_rand()和RAND()会有更好的表现。让我们测试问题。
例1。mt_rand()的例子,代码如下:
复制代码代码如下:< PHP
mt_rand(回声)。n;
mt_rand(回声)。n;
mt_rand回声(5, 15);
>
此输出类似于:
十六亿零四百七十一万六千零一十四
十四亿七千八百六十一万三千二百七十八
六
注:从PHP 4.2.0,不再需要使用srand()或()函数mt_srand播种的随机数发生器,并已自动完成。
注:在3.0.7以前的版本中,马克斯是范围的意思,参与这些版本和相同的随机数5到15,一个简单的例子是mt_rand(5, 11)。
细节可以发现在mt_srand()(),()和()mt_getrandmax兰德相关文件。
函数返回一个随机整数。
语法:兰德(min,max)
参数
描述
分钟,马克斯
指定随机数的范围是可选的。
注意:如果没有提供可选参数min,马克斯,伦德()返回例如0和rand_max,之间的伪随机整数,5之间的随机数15(包括5和15)是兰德(5, 15)。
提示和注释
注:在某些平台(例如,Windows),rand_max仅32768。如果要求的范围是大于32768,指定最小和马克斯参数可以产生超过rand_max,或考虑mt_rand()代替它。
注:从PHP 4.2.0,它不再需要母猪随机数发生器与srand()或()函数mt_srand,现在都是自动完成的。
注:在3.0.7以前的版本中,马克斯是范围的意思,参与这些版本和相同的随机数5到15,一个简单的例子是兰德(5, 11)。
是mt_rand()快4倍比兰德真()用你自己的测试来回答这个问题,看看在线介绍。测试如下。
mt_rand()和RAND()的对比测试,测试代码如下:
复制代码代码如下:< PHP
$ max = 100000;
timeparts美元=爆炸('',瞬时());
时间=美元美元timeparts { 1 }。substr($ timeparts { 0 },1);
$ I = 0;
当($ i $ max max){
伦德();
美元+;
}
timeparts美元=爆炸('',瞬时());
时间=美元美元timeparts { 1 }。substr($ timeparts { 0 },1);
美元美元美元的时间时间时间;
在{ $ }秒中使用兰德()生成的随机数;
timeparts美元=爆炸('',瞬时());
时间=美元美元timeparts { 1 }。substr($ timeparts { 0 },1);
$ I = 0;
当($ i $ max max){
mt_rand();
美元+;
}
timeparts美元=爆炸('',瞬时());
时间=美元美元timeparts { 1 }。substr($ timeparts { 0 },1);
美元美元美元的时间时间时间;
回声{ } $最大随机数产生在{ $时间}秒使用mt_rand();;
>
试验结果如下:
第一个测试
100000个随机数在0.024894952774048秒内用兰德()生成;
使用mt_rand 0.028925895690918秒产生100000个随机数();
第二次测试
100000个随机数在0.03147292137146秒内用兰德()生成;
使用mt_rand 0.02997088432312秒产生100000个随机数();
第三测试
100000个随机数在0.028102874755859秒内用兰德()生成;
使用mt_rand 0.02803111076355秒产生100000个随机数();
第四测试
100000个随机数在0.025573015213013秒内用兰德()生成;
使用mt_rand 0.028030157089233秒产生100000个随机数();
这个结果只显示了几次结果,再进行一些测试,你会发现这两个是交替变化的,但两个没有什么不同。
mt_rand()和RAND()对比测试
我的测试环境,操作系统:Windows XP,Apache 2,php 5.2.12,2G内存
代码如下:
复制代码代码如下:< PHP
microtime_float()函数
{
列表(USEC美元美元,SEC)=爆炸(
返回((浮动)$ USEC +(浮动)$秒);
}
time_start美元= microtime_float();
($ i = 0;$ i < 1000000;+ I $ I)
{
伦德();
}
time_end美元= microtime_float();
时间time_end美元美元美元time_start;
回声兰德()花费的时间secondsn ;
time_start美元= microtime_float();
($ i = 0;$ i < 1000000;+ I $ I)
{
mt_rand();
}
time_end美元= microtime_float();
时间time_end美元美元美元time_start;
回声mt_rand()花费的时间secondsn ;
>
试验结果如下:
第一次
伦德()花费了0.25919604301453秒
mt_rand()花费0.28554391860962秒
伦德()花费了0.31136202812195秒
mt_rand()花费0.28973197937012秒
第三
伦德()花费了0.27545690536499秒
mt_rand()花费0.27108001708984秒
第四
伦德()花费了0.26263308525085秒
mt_rand()花费0.27727103233337秒
结果是一样的:两人交替使用的时间是交替的,事实上,两者之间没有什么大的区别。
PHP的mt_rand比较()和RAND()
看到很多人在网上测试,Linux和Windows,大部分的结果和我的一样:没有太大的差异,但也有人测量mt_rand(RAND))比(4倍,而是因为他们没有给出具体的测试环境,所以不能确定真正的假。我仍然相信我的结论,因为我看到有人介绍mt_rand()和RAND():
为什么不说mt_rand PHP手册()比兰德的速度快4倍()
这是因为使用的mt_rand梅森费尔托斯特alrythm(1997)是10,所以速度和兰德的区别(4次)是10年前。自2004以来,兰德开始使用alrythm,所以现在他们有速度无显著差异。
从上面的各种测试来看,它们之间没有区别,但是不同系统中的系统数量可能会有所变化。
希望本文能对大家的PHP程序设计有所帮助。