php抽奖页代码,php抽奖代码

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发 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值