php简单中奖算法(实例)


Posted in PHP onAugust 15, 2017

今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而且不止一种方法 这种我感觉还是比较容易的 还是那句话 实现功能的思路不止一种 代码也不止一种。

function get_rand($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;
}


$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>0.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),
);


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;
echo json_encode($res,JSON_UNESCAPED_UNICODE);

以上这篇php简单中奖算法(实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
如何利用php+mysql保存和输出文件
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 PHP
PHP实现的随机红包算法示例
Aug 14 #PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 #PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 #PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 #PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 #PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 #PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
You might like
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
浅谈layui里的上传控件问题
2019/09/26 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
python中文编码问题小结
2014/09/28 Python
Python中DJANGO简单测试实例
2015/05/11 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python Requests库基本用法示例
2018/08/20 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python的Jenkins接口调用方式
2020/05/12 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
聚美优品陈欧广告词
2014/03/14 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
新闻编辑求职信
2014/07/13 职场文书
颐和园导游词
2015/01/30 职场文书
军训结束新闻稿
2015/07/17 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库