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

相關文章
相關標籤/搜索