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 相关文章推荐
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
基于php-fpm的配置详解
Jun 03 PHP
php精确的统计在线人数的方法
Oct 21 PHP
php集成动态口令认证
Jul 21 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 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
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP 断点续传实例详解
2017/11/11 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python实现端口复用实例代码
2014/07/03 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
python 如何将office文件转换为PDF
2020/09/22 Python
python 基于pygame实现俄罗斯方块
2021/03/02 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
应届毕业生求职信
2013/11/30 职场文书
实习指导老师评语
2014/04/26 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
mysql函数全面总结
2021/11/11 MySQL