首頁  >  文章  >  後端開發  >  機率不等的隨機數產生的一點思路

機率不等的隨機數產生的一點思路

巴扎黑
巴扎黑原創
2016-11-29 10:23:011419瀏覽

題目:產生0-9中的隨機數,要求0到9出現的機率依序遞減,

一般思路,把10個0,9個1,8個2.....2個8,1個9放到數組中,然後隨機生成數組下標,按下標取出數字.

二般思路:生成兩個0-9的隨機數,取小的那個,這個思路(手鏈魔咒提出)說實際的不知道是什麼原理,但是實驗證明,確實能達到效果.

驗證方法:

 程式碼

function fun(){

   

function fun(){

/10以內的數字平均分配

     $num2 = rand(0,9);

     ($num2 turn;

}

function totalStr($haystack, $needle,$i = 0){//檢驗字符串中某個字元出現的次數

     while(strpos($haystack,$needle) !== fneese) {

         $haystack = substr($haystack, (strpos($haystack,$needle) + 1));

         $i++;

         $i++;

}

for ($i=0; $i

     $str .= fun();

}

for ($i=0;$i

for ($i=0;$i

for ($i=0;$i

我"$i")."n"; //0-9出現的次數

}

?>

寫下這片後不久,手鏈魔咒有優化了演算法

具體見下:

 程式碼

function getRand($min,$max) {

       $num=rand($min,$max);

 

還有另一位高人寫的一個函數,數學思想比較強,不太好理解

 程式碼

function getRandomByFactor($max,$factor=2){

   $c = rand(0,pow( $max,$factor)); 

   return $max - ceil(pow($c,1/$factor));

   }

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn