php mt getrandmax_rand函数的缺陷问题,在新版本中有没有修复这个问题?

2010年3月 PHP大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。php中mt_rand()随机数函数用法
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了php中mt_rand()随机数函数用法,较为详细的分析了mt_rand()随机数函数的常见用法,并结合数组遍历给出了数组随机输出的实例,需要的朋友可以参考下
本文实例讲述了php中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).
在 3.0.7 之前的版本中,max 的含义是 range,要在这些版本中得到和上例相同 5 到 15 的随机数,简短的例子是 mt_rand (5, 11).
PHP实例代码如下:
代码如下:$rand = mt_rand(0,1);
if( $rand==0 )
&$array = array(41,20,26,29,30);
elseif( $rand==1 )
&$array = array(38,42,37,400,444);
foreach( $array as $v =& $vv )
&echo "$vvn";
希望本文所述对大家的PHP程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具一、确认问题:
输入下面这个地址:http://你的网址/index.php?app=captcha&
打开后出现:mt_rand(): max(0) is smaller than min(1) 或者 mt_rand(): max(24) is smaller than min(26) 等类型的错误,则可以采取我们下面给出的解决方法。
二、问题原因:
在PHP 5.3.3版本以前,mt_rand($a, $b)传入的参数$a和$b二者没有数字大小比较的限制,但是自5.3.4版本PHP开始,传入的参数必须满足$a &= $b,即第一个参数必须小于等于第二次参数。但根据目前ECMall的代码,会出现$a&$b 的情况,所以,我们要避免出现这一情况。
三、解决问题:
1)打开(注意:不要用记事本打开,要用DW等网页编辑器打开修改) app/captcha.app.php把$this-&_captcha(80, 24);改为$this-&_captcha(80, 26);
2)打开 admin/app/captcha.app.php 把$this-&_captcha(70, 20);修改为:$this-&_captcha(70, 26);
3)打开 includes/libraries/captcha.lib.php
把274行中的$x = mt_rand($font[0]['angle'] & 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 1, $this-&width - $widthtotal);改为:$x = mt_rand($font[0]['angle'] & 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 0, $this-&width - $widthtotal);
总结:由此可以看出,此种情况,一般只是在PHP5.3以上的版本才会出现,如果你的是PHP5.2.*的版本,不用考虑此解决方法。
微信关注模客网
ECMall开发群
售前在线咨询
售后技术支持
商务合作咨询
投诉及建议}

我要回帖

更多关于 php mt rand 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信