php 中奖概率算法实现代码

三月 28, 2019 | views
Comments 0

  1. <?php 
  2. /** 
  3.  *php 中奖概率算法 
  4.   
  5.  * 
  6.  */ 
  7. functionget_zj($jp,$glname='gl'){ 
  8.     $sum= 0; 
  9.     <a href="/tags.php/foreach/" target="_blank">foreach</a>($jpas$k=>$v){ 
  10.         $sum+=$v[$glname]; 
  11.     } 
  12.    
  13.     $R= rand(1,$sum);//获取随机数 
  14.    
  15.     foreach($jpas$k=>$v){ 
  16.         if($R<=$v[$glname] ){ 
  17.             return$v
  18.         } 
  19.         $R=$R-$v[$glname] ; 
  20.     } 
  21.    
  22.    
  23.    
  24. //使用方法 
  25. //模拟一个从<a href="/database/database.html" target="_blank">数据库</a>中读取的 中奖配置  gl 为 中奖的概率 
  26. //例如array( 'gl' => 10 , 'title' => '一等奖');的中奖概率 = 10 / (10+20+30+40) 
  27. $jp=array(); 
  28. $jp[] =array('gl'=> 10 ,'title'=>'一等奖'); 
  29. $jp[] =array('gl'=> 20 ,'title'=>'二等奖'); 
  30. $jp[] =array('gl'=> 30 ,'title'=>'三等奖'); 
  31. $jp[] =array('gl'=> 40 ,'title'=>'未中奖'); 
  32.    
  33.    
  34. //调用 中奖概率函数 
  35. //返回中奖 信息数组 例如:array( 'gl' => 10 , 'title' => '一等奖'); 
  36. $zj= get_zj($jp); 
  37.    
  38. //输出数组 
  39. var_dump($zj); 

使用方法:

模拟一个从数据库中读取的 中奖配置 gl 为 中奖的概率

例如:

  1. array'gl' => 10 , 'title' => '一等奖');的中奖概率 = 10 / (10+20+30+40) 
  2. $jp = array(); 
  3. $jp[] = array'gl' => 10 , 'title' => '一等奖'); 
  4. $jp[] = array'gl' => 20 , 'title' => '二等奖'); 
  5. $jp[] = array'gl' => 30 , 'title' => '三等奖'); 
  6. $jp[] = array'gl' => 40 , 'title' => '未中奖'); 

调用 中奖概率函数

返回中奖 信息数组 例如:array( 'gl' => 10 , 'title' => '一等奖');



zend