<?php
/**
*php 中獎概率算法
*
*/
functionget_zj($jp,$glname='gl'){
$sum= 0;
foreach($jpas$k=>$v){
$sum+=$v[$glname];
}
$R= rand(1,$sum);//獲取隨機數
foreach($jpas$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' => '一等獎');