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在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
php中in_array函数用法探究
Nov 25 PHP
php内存缓存实现方法
Jan 24 PHP
phalcon框架使用指南
Feb 23 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
PDO实现学生管理系统
Mar 21 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的十大要点(上)
2009/02/04 PHP
php session 预定义数组
2009/03/16 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中django学习心得
2017/12/06 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python之文件读取一行一行的方法
2018/07/12 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
python实现移动木板小游戏
2020/10/09 Python
python 装饰器重要在哪
2021/02/14 Python
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
技术学校毕业生求职信分享
2013/12/02 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
入团介绍人意见范文
2015/06/04 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
使用nginx配置访问wgcloud的方法
2021/06/26 Servers