主页 > 编程资料 > PHP >
发布时间:2017-02-01 作者:网络 阅读:271次

实现代码:

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


关键字词: