导航栏

文章

  • 首页
  • 查看历史

导航栏

  • 登陆
    • QQ登陆 微博登陆
  • 其他
    • 图标库
  • 夜间模式
  • 退出登录

【亲测】php抽奖算法分享【亲测】


作者:科技小锅盖             时间:2023-5-16 10:21             站长QQ:1540217035

抽奖的算法也是比较简单分享两种的吧

1、只要是随机的数在当前的范围内就是中奖,设置奖品不是10000的话不会中奖,自己使用的抽奖代码逻辑

// 从1-10000中随机抽取一个数
$randomProbability  = random_int(1, 10000);
$currentProbability = 0;
// $award 抽中的奖品信息
$award = [];
foreach ($realPrizes as $realPrize) {
   $currentProbability += $realPrize['probability'];
   if ($randomProbability <= $currentProbability) {
       $award = $realPrize;
       break;
   }
}

2、百度比较多的,所有奖品中奖概率是总概率

<?php
public function gl(){
   $prize_arr = [
       '0' => ['id' => 1, 'prize' => '奖品1', 'v' => 20],
       '1' => ['id' => 2, 'prize' => '奖品2', 'v' => 10],
       '2' => ['id' => 3, 'prize' => '奖品3', 'v' => 20],
       '3' => ['id' => 4, 'prize' => '奖品4', 'v' => 5],
       '4' => ['id' => 5, 'prize' => '奖品5', 'v' => 19],
       '5' => ['id' => 6, 'prize' => '奖品6', 'v' => 5],
       '6' => ['id' => 7, 'prize' => '奖品7', 'v' => 10],
       '7' => ['id' => 8, 'prize' => '奖品8', 'v' => 10],
   ];

   foreach ($prize_arr as $key => $val) {
       $arr[$val['id']] = $val['v'];
   }

   $rid = $this->get_prize($arr); //根据概率获取奖项id
   $data = $prize_arr[$rid-1];
   return json($data);

}

public function get_prize($proArr) {
   $result = '';
   //概率数组的总概率精度
   $proSum = array_sum($proArr);
   //概率数组循环
   foreach ($proArr as $key => $proCur) {
       $randNum = mt_rand(1, $proSum);
       if ($randNum <= $proCur) {
           $result = $key;
           break;
       } else {
           $proSum -= $proCur;
       }
   }
   unset ($proArr);
   return $result;
}
?>

简单的抽奖算法的分享,后面有其他的也会分享一下


推荐

【亲测】宝塔面板遇到 is not within the allowed path(s) 的问题【亲测】

2020-10-26 19:04:12

【亲测】lumen 异步队列 注意事项 【亲测】

2021-05-14 11:18:36

【亲测】生成GUID方法,随便用 【亲测】

2022-05-17 10:24:30

【亲测】Centos7 安装 Aria2 并配置到ifileSpace离线下载 【亲测】

2021-11-10 11:19:48

索尼已暂停向华为提供相机CMOS传感器

2020-09-23 13:19:58

【亲测】宝塔面板Supervisor (进程管理) 使用 – Lumen任务守护教程【亲测】

2021-05-14 14:53:28

【亲测】ClickHouse 筛选门店同一个字段不同值数量【亲测】

2022-08-10 14:47:22

【亲测】Centos7 的 Aria2 配置https遇到的问题总结【亲测】

2021-11-12 15:37:47

【亲测】php 秒杀商品算法分享 【亲测】

2023-05-16 10:13:30

【亲测】linux中添加ftp用户,并设置相应的权限【亲测】

2020-07-29 13:31:46

陕ICP备2021003534号-1 科技小锅盖 保留所有权利 网站地图 站长QQ:1540217035
    友情链接:
  • 米醋儿