php 中奖概率算法实现代码
三月 28, 2019 | views
Comments 0
- <?php
- /**
- *php 中奖概率算法
- *
- */
- functionget_zj($jp,$glname='gl'){
- $sum= 0;
- <a href="/tags.php/foreach/" target="_blank">foreach</a>($jpas$k=>$v){
- $sum+=$v[$glname];
- }
- $R= rand(1,$sum);//获取随机数
- foreach($jpas$k=>$v){
- if($R<=$v[$glname] ){
- return$v;
- }
- $R=$R-$v[$glname] ;
- }
- }
- //使用方法
- //模拟一个从<a href="/database/database.html" target="_blank">数据库</a>中读取的 中奖配置 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' => '一等奖');
zend