php随机数rand和mt_rand

今天想写个扔骰子并统计点数几率的小程序,使用以下方法生成随机数网站推广算法

Php代码
  1. for ($j=0;$j<10000;$j++){  
  2.     for($i=0;$i<6;$i++){  
  3.         $tempArray[$i] = rand(1, 6);  
  4.     }  
  5.     $temp = array_count_values($tempArray);  
  6.     for ($i=1;$i<7;$i++){  
  7.         isset($temp[$i])?0:$temp[$i]=0;  
  8.     }  
  9.     print_r($temp);  
  10. }  

最后发现不管进行多少次循环,始终不出现 6个四、6个5 , 6个3和6个6最常出现,不知道这是为何,最后在手册上找到mt_rand()方法而且不会出现此类问题

 

mt_rand() 使用 Mersenne Twister 算法返回随机整数,mt_rand()是rand()的一个非正式的替代品。小程序

 说明函数

 若是没有提供可选参数 minmax,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。网站

不少老的 libc 的随机数发生器具备一些不肯定和未知的特性并且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性做为随机数发生器,它能够产生随机数值的平均速度比 libc 提供网站推广的 rand() 快四倍。(fblww-0106)spa

相关文章
相关标签/搜索