抽奖概率思想:

1.给每一个奖项设置要给概率数,如下面所有奖品综合设置为100,iphone5s是5,也就是5%

2.然后通过php生成随机数函数生成一个在总概率之间的随机数

如:抽第一个奖品5s的时候,因为是第一次foreach循环,产生的随机数就是在0-100之内的,判断是否中奖,则是看生成的随机数是否在0-5之内,如果在则抽中,否则就是循环到第二件奖品,笔记本是10,但是这里要注意一点,产生的随机数应该是减去之前的如5s中的5

<?php

$prize_arr = array(
'0' => array('id' => 1, 'title' => 'iphone5s', 'v' => 5),
'1' => array('id' => 2, 'title' => '联系笔记本', 'v' => 10),
'2' => array('id' => 3, 'title' => '音箱设备', 'v' => 20),
'3' => array('id' => 4, 'title' => '30GU盘', 'v' => 30),
'4' => array('id' => 5, 'title' => '话费50元', 'v' => 10),
'5' => array('id' => 6, 'title' => 'iphone6s', 'v' => 15),
'6' => array('id' => 7, 'title' => '谢谢,继续加油哦!~', 'v' => 10),
); foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];
} $prize_id = getRand($arr); //根据概率获取奖品id
$data['msg'] = ($prize_id == 7) ? 0 : 1; //如果为0则没中
$data['prize_title'] = $prize_arr[$prize_id - 1]['title']; //中奖奖品
echo json_encode($data);
exit; //以json数组返回给前端 function getRand($proArr) { //计算中奖概率
$rs = ''; //z中奖结果
$proSum = array_sum($proArr); //概率数组的总概率精度
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $proCur) {
$rs = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset($proArr);
return $rs;
} ?>

最新文章

  1. SharePoint 2016 图文安装教程
  2. [不好分类]SD卡无法读取,显示RAW
  3. VS安装部署
  4. ASP.NET MVC 监控诊断、本地化和缓存
  5. C++ 面向对象的三个特点--多态性(二)
  6. ABAP字符串按长度拆分
  7. 转载---linux运维相关
  8. Android v4 包和v7包问题
  9. 【python自动化第九篇:进程,线程,协程】
  10. awsomeplayer结构认识
  11. Qt 学习之路:文本文件读写
  12. AIX安装SSH
  13. Android EditeText常用功能盘点
  14. linux下串口通信与管理
  15. Dev使用技巧
  16. 高并发场景之RabbitMQ篇
  17. parse_str 与 http_build_query的使用
  18. Eclipse代码块折叠插件,安装使用
  19. Hack Programming
  20. 6-16 单词 uva10129

热门文章

  1. 在efcore 中创建类 通过实现IEntityTypeConfiguration&lt;T&gt;接口 实现实体类的伙伴类 实现FluentApi
  2. 特征价格(Hedonic price)
  3. 一些自成系统、完备的教程(链接、博客、github等)
  4. 基于IdentityServer4的单点登录——项目基本结构与流程
  5. WPF最大化避免覆盖任务栏
  6. xadmin下修改左道航的显示不是中文字修改方法
  7. Win8 Metro(C#)数字图像处理--3.5图像形心计算
  8. VS2013环境里安装QT插件-“X86”与目标计算机类型“x64”冲突
  9. iOS中的加密操作
  10. 十个 Web 开发者熟悉的经典开源项目和工具