PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    一个简单的php抽奖程序概率函数

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:一个简单的php抽奖程序概率函数复制代码 代码如下:/*** 简单的抽奖概率函数* @param array $rewardArray 概率,如:$rewardArray = ...
    一个简单的php抽奖程序概率函数

     
    复制代码 代码如下:
    /**
    * 简单的抽奖概率函数
    * @param array $rewardArray 概率,如:$rewardArray = array(10, 20, 20, 30, 10, 10),对应各奖品的概率
    * @return int    概率数组的下标
    */
    function luckDraw($rewardArray)
    {
    $sum = array_sum($rewardArray);

    if($sum !== 100)
    {
      return 'Error:The sum of values in $rewardArray Must be equal to 100!';
    }

    //获取随机数
    $rewardNum = mt_rand(0, $sum - 1);

    $totalnum = count($rewardArray);
    for($i = 0; $i < $totalnum; $i++)
    {
      if($i == 0)
      {
       if($rewardArray[$i] > $rewardNum && $rewardNum >= 0)
       {
        return $i;
       }
      }
      else
      {
       $max = $min = 0;
       for($j = 0; $j <= $i; $j++)
       {
        $max = $max + $rewardArray[$j];
       }
       for($k = 0; $k < $i; $k++)
       {
        $min = $min + $rewardArray[$k];
       }
       if($max > $rewardNum && $rewardNum >= $min)
       {
        return $i;
       }
      }
    }
    }
    该函数主要是判断产生的随机数所在的概率范围。

    示例:


     
    复制代码 代码如下:
    $rewardArray = array(10, 20, 20, 30, 10, 10);

    //各概率对应值范围
    //10,:0-10
    //20:10-30
    //20:30-50
    //30:50-80
    //10:80-90
    //10:90-100

    echo luckDraw($rewardArray);
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-894-1.html
    相关热词搜索: php抽奖程序