加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php抽奖概率算法(刮刮卡,大转盘)

发布时间:2020-12-12 21:35:15 所属栏目:PHP教程 来源:网络整理
导读:本文实例为大家分享了php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单,代码里有详细注释说明,供大家参考,具体内容如下 $proCur) { $randNum = mt_rand(1,$proSum); if ($randNum /* 奖项数组 是一个二维数组,记录了所有本次抽奖的奖项信息

本文实例为大家分享了php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单,代码里有详细注释说明,供大家参考,具体内容如下

$proCur) { $randNum = mt_rand(1,$proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; }

/*

  • 奖项数组
  • 是一个二维数组,记录了所有本次抽奖的奖项信息,
  • 其中id表示中奖等级,prize表示奖品,v表示中奖概率。
  • 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0,
  • 数组中v的总和(基数),基数越大越能体现概率的准确性。
  • 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%,
  • 如果v的总和是10000,那中奖概率就是万分之一了。
  • */
    $prize_arr = array(
    '0' => array('id'=>1,'prize'=>'平板电脑','v'=>1),'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),'3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),'4' => array('id'=>5,'prize'=>'10Q币','v'=>22),'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),);

/*

  • 每次前端页面的请求,PHP循环奖项设置数组,
  • 通过概率计算函数get_rand获取抽中的奖项id。
  • 将中奖奖品保存在数组$res['yes']中,
  • 而剩下的未中奖的信息保存在$res['no']中,
  • 最后输出json个数数据给前端页面。
    */
    foreach ($prize_arr as $key => $val) {
    $arr[$val['id']] = $val['v'];
    }
    $rid = get_rand($arr); //根据概率获取奖项id

$res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项
unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){
$pr[] = $prize_arr[$i]['prize'];
}
$res['no'] = $pr;
print_r($res);
?>

以上就是php抽奖概率算法的全部内容,希望对大家学习php程序设计有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读