1.经典概率算法抽奖

$tmpItems = ['电脑'=>10, '相机'=>50, '100元现金'=>500];

$proSum = array_sum($tmpItems);

foreach ($tmpItems as $key => $proCur) {

$randNum = mt_rand(1, $proSum);

if ($randNum <= $proCur) {

$resultId = $key;

break;

} else {

$proSum -= $proCur;

}

}

从count($tmpItems)总样本中随机一个数,循环的判断是否小于currentValue,小于便是中奖,大于就从总样本中扔掉currentValue ,继续循环产生随机数判断概率是否落入小于currentValue区间内。

封装为函数,支持概率为小数点 (小数点位数越多数据量越大)

function get_prize($prizeItems) {

$resultId = '';

$dec = explode('.', strval(min($prizeItems))); # 小数点拆分

$dec_len = isset($dec[1]) ? strlen($dec[1]) : ''; #小数点后长度

$radix = 1; # 乘积的基数

if ($dec_len) {

for ($i = 1; $i <= $dec_len; $i++) {

$radix*=10;

}

}

$tmpItems = [];

foreach ($prizeItems as $key => $value) {

$tmpItems[$key] = $value * $radix;

}

$proSum = array_sum($tmpItems);

foreach ($tmpItems as $key => $proCur) {

$randNum = mt_rand(1, $proSum);

if ($randNum <= $proCur) {

$resultId = $key;

break;

} else {

$proSum -= $proCur;

}

}

return $resultId;

}

/**

* 电脑 概率为0.02% 十万分之二

* 相机 概率为0.2% 万分之二

* 100元现金 概率为1.8% 百分之一点八

* 德芙巧克力 概率为40% 十分之四

* 谢谢参与 概率为57.98% 百分之五十七点九八

*/

$prizeItems = ['电脑' => 0.0002, '相机' => 0.002, '100元现金' => 0.018,'德芙巧克力'=>0.4,'谢谢参与'=>0.5798];

print_r(get_prize($prizeItems));

2.全概率样本抽奖

js手机号批量滚动抽奖代码实现

我们平时在看一些选秀节目或一些歌唱类比赛节目时经常会看到在现场的大屏幕上会有观众的手机号在滚动来选出谁是幸运观众或谁中了什么奖项,这些手机号都是现场观众或场外观众在给选手投票时产生的,当主持人一声开始 ...

jquery&period;rotate&period;js实现可选抽奖次数和中奖内容的转盘抽奖代码

需求: 抽奖代码最多可以抽奖5次,而且,每次只会中“2000元理财金”或者“谢谢参与”,其它的不会抽中(哈哈,果然都是套路). 效果如下: 一.页面结构: ? 1 2 3 4 5 6 7 8 9 10 ...

javascript 转盘抽奖代码和计数器代码

要介绍了javascript圆盘抽奖程序实现原理和完整代码例子,需要的朋友可以参考下  看到网页上有不少大转盘抽奖的应用,心血来潮也想弄个.于是找了点资料自己研究...  效果预览: 一.模拟抽奖的实 ...

jQueryRotate 转盘抽奖代码实现

代码如下: 例子兼容IE6,7,8 以及高版本浏览器,如有bug请回复! 1.html结构 ...

html 抽奖代码

uccess">& ...

IOS调试技巧:当程序崩溃的时候怎么办 xcode调试

转自:http://www.ityran.com/archives/1143 ------------------------------------------------ 欢迎回到当程序崩溃的时候 ...

RBM

1. 玻尔兹曼分布: $$p(E) \thicksim e^{-E/kT} $$ 2. RBM 两层:隐层和可视层, $\mathbf v$, $\mathbf h$ $$v_i \in \{0, 1 ...

Nginx安装(官网翻译)

转载自:https://www.nginx.com/resources/wiki/start/topics/tutorials/install/ 二进制版本预包装的Linux和BSD大多数Linux发 ...

php抽奖页代码,php抽奖代码相关推荐

  1. 手机抽奖页面代码html,html5大转盘抽奖支持手机转盘抽奖代码

    特效描述:html5 大转盘抽奖 支持手机 转盘抽奖代码.html5转盘,html5抽奖,手机转盘,手机抽奖,手机转盘抽奖,可配置奖品抽奖. 代码结构 1. 引入CSS 2. 引入JS 3. HTML ...

  2. java抽奖_JAVA实现用户抽奖功能(附完整代码)

    需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号 ...

  3. php9宫格抽奖程序_PHP实现抽奖功能实例代码

    在项目开发中经常会遇到花钱抽奖类型的需求.但是老板总是担心用户用小钱抽到大奖.这样会导致项目亏损.下边这段代码可以有效制止抽奖项目亏钱. 个人奖池: 语言:thinkphp redis mysql 表 ...

  4. java单数字随机抽奖特效_jquery输入数字随机抽奖特效的简单实现代码

    简介:jQuery自定义数值抽奖活动代码是一款点击开始按钮计算机会产生玩家输入范围内的随机数,点击停止按钮,将显示数字最终结果的效果. 效果图如下: 代码如下: jQuery自定义数值抽奖活动代码 - ...

  5. 用Java实现一个抽奖系统(附完整代码)

    作者:四原色 来源:https://blog.csdn.net/qq_44140450 需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的 ...

  6. java登录注册抽奖完整代码_JAVA实现用户抽奖功能(附完整代码)

    需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号 ...

  7. 小程序抽奖效果demo滚筒抽奖3d动画抽奖(附代码以及随机中奖处理)

    前言: 最近公司要求做一个抽奖的页面,然后看到设计稿的一刻眉头一皱,这事没那么简单 最开始是用translateY但是效果太生硬了而且不方便二次抽奖或者多次抽奖找了半天决定用3d来做成一个滚轮这样的好 ...

  8. 一道多线程编程题的代码案例(两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”,)

    题目: 分析以下需求,并用代码实现          有一个抽奖池,该抽奖池中存放了奖励的金额,         该抽奖池中的奖项为         {"魅族E","畅玩 ...

  9. java 代码模拟抽奖(练习)

    题目:一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金.请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复.打印效果如下:(随机顺序,不一定是 ...

最新文章

  1. CentOS下php安装mcrypt扩展
  2. DataNumen DWG Recovery中文版
  3. QT的QTableWidget类的使用
  4. 前端学习(205):animation动画库
  5. python列表转换成数字_Python中列表元素转为数字的方法分析
  6. 苹果无人驾驶拿 124 个工程师祭天!
  7. 计算机无法进系统咋办,主编教您电脑无法进入系统怎么办
  8. mysql外部关联视图_MySQL数据库 : 自关联,视图,事物,索引
  9. exescope使用
  10. 审批流程jquery进度条
  11. ROS与VREP通信
  12. 聚类 之 MeanShift
  13. 联想黑苹果找不到触摸板_联想s410笔记本安装黑苹果10.11.6成功,功能基本都实现,分享给群里的兄弟们!!!...
  14. 工商银行理财快速刷星汇总
  15. 去痘痘、痘坑的五大误区
  16. 蓝牙4.0BLE 芯片cc2540和cc2541 128x64 oled显示屏驱动
  17. 分享50个优秀的电子商务网站设计案例
  18. MySQL 实现无数据插入有数据更新
  19. Linux下安装和使用RTX腾讯通
  20. 深度学习新王者AutoML和NAS

热门文章

  1. linux音频子系统 - pcm设备
  2. ExoPlayer播放器 开发者指南(官方权威指南译文)
  3. 头歌Python实训答案——函数结构
  4. Codeforces 1247D. Power Products (logn质因数分解)
  5. 8.23 正点原子领航者V1开发板学习之EEPROM
  6. 第十六周学习周报(20180618-20180624)
  7. c语言蒸汽流量温度压力补偿运算,当蒸汽流量测量使用温度压力补偿,这七点不容忽略!...
  8. 「云计算」全球最大的5家云计算公司
  9. Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND 11000
  10. linux mysql 登录报1045_【mysql】linux登录MySQL_报错ERROR_1045_(28000)解决办法