php 中奖概率算法实现代码

2018-10-15 16:58

阅读:459

实现代码:

<?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 => 一等奖);


评论


亲,登录后才可以留言!