實現代碼:
<?php/** *php 中獎機率演算法 * */function get_zj( $jp ,$glname = 'gl'){ $sum = 0; foreach($jp as $k =>$v ){ $sum += $v[$glname]; } $R = rand(1,$sum);//擷取隨機數 foreach( $jp as $k => $v){ if( $R <= $v[$glname] ){ return $v; } $R = $R - $v[$glname] ; } } //使用方法//類比一個從資料庫中讀取的 中獎配置 gl 為 中獎的機率 //例如array( 'gl' => 10 , 'title' => '一等獎');的中獎機率 = 10 / (10+20+30+40)$jp = array();$jp[] = array( 'gl' => 10 , 'title' => '一等獎');$jp[] = array( 'gl' => 20 , 'title' => '二等獎');$jp[] = array( 'gl' => 30 , 'title' => '三等獎');$jp[] = array( 'gl' => 40 , 'title' => '未中獎'); //調用 中獎機率函數 //返回中獎 資訊數組 例如:array( 'gl' => 10 , 'title' => '一等獎');$zj = get_zj( $jp ); //輸出數組var_dump($zj);
使用方法
類比一個從資料庫中讀取的 中獎配置 gl 為 中獎的機率
例如array( 'gl' => 10 , 'title' => '一等獎');的中獎機率 = 10 / (10+20+30+40)
$jp = array();
$jp[] = array( 'gl' => 10 , 'title' => '一等獎');
$jp[] = array( 'gl' => 20 , 'title' => '二等獎');
$jp[] = array( 'gl' => 30 , 'title' => '三等獎');
$jp[] = array( 'gl' => 40 , 'title' => '未中獎');
調用 中獎機率函數
返回中獎 資訊數組 例如:array( 'gl' => 10 , 'title' => '一等獎');