php随机数rand和mt_rand
2011-08-17 20:21
316 查看
今天想写个扔骰子并统计点数概率的小程序,使用如下方法生成随机数
最后发现无论进行多少次循环,始终不出现 6个4、6个5 , 6个3和6个6最常出现,不知道这是为什么,最后在手册上找到mt_rand()方法并且不会出现此类问题
mt_rand() 使用 Mersenne Twister 算法返回随机整数,mt_rand()是rand()的一个非正式的替代品。
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
for ($j=0;$j<10000;$j++){ for($i=0;$i<6;$i++){ $tempArray[$i] = rand(1, 6); } $temp = array_count_values($tempArray); for ($i=1;$i<7;$i++){ isset($temp[$i])?0:$temp[$i]=0; } print_r($temp); }
最后发现无论进行多少次循环,始终不出现 6个4、6个5 , 6个3和6个6最常出现,不知道这是为什么,最后在手册上找到mt_rand()方法并且不会出现此类问题
mt_rand() 使用 Mersenne Twister 算法返回随机整数,mt_rand()是rand()的一个非正式的替代品。
说明
如果没有提供可选参数 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中mt_rand()随机数的安全
- php随机数rand和mt_rand
- PHP获取随机数的函数rand()和mt_rand()
- PHP获取随机数的函数rand()和mt_rand()
- php随机数rand(),mt_rand()简说
- php rand()和mt_ran(),还有随机数生成器
- PHP生成随机数——rand()
- PHP rand()和mt_rand()的区别
- php中的str_shuffle()和shuffle()和mt_rand()
- php中mt_rand()随机数函数用法
- php mt_rand
- PHP mt_srand(),rand(),mt_rand() 函数
- PHP rand()和mt_rand()的区别
- php mt_rand 的缺陷
- PHP中函数rand和mt_rand的区别比较
- PHP程序实现利用rand(1,100)函数产生10个1~100之间的随机数
- PHP rand和mt_rand 区别
- php中mt_rand()随机数函数用法
- PHP mt_rand() 函数
- php mt_rand()随机数函数