paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
#---抽奖算法需要满足的需求如下: 1
#---抽奖核心流程 1
#---问题???更好的算法 2
#---实际使用的扩展抽奖算法(带奖品送完判断和每用户最大中奖判断) 2
#-------网上的抽奖算法Php 3
#----java版本的.. 4
参考 5
#---抽奖算法需要满足的需求如下:
1.可以控制中奖的概率
2.具有随机性
3.最好可以控制奖品的数量
4.根据用户ID或者ip、手机号、QQ号等条件限制抽奖次数
初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面看一下整体的程序:
关联的数据结构
[id] ,[activityId] ,[awardName] ,[awardCount] ,[概率]
作者 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
#---抽奖核心流程
//判断每用户每个活动的最大bingo数字...
if (bingoedNum(uid,actid.toString()) >= perUserMaxBigonNum) {
return null;
}
StartAwd()
if (awd == null)
return null;
// 判断奖品是否送完
if (awdOver(awd)) {
return null;
Reutnr awd.
#---问题???更好的算法
网上的算法是没问题的,就是理解起来麻烦的...不是一个真实的阶段式抽取的方法...
例如俄们子有一个奖品,算法的时候儿子要不个probability 概率算呱走ok兰...
有3个奖品,子要不个哪for给挂走ok兰木....
public static Awardx getBingoAwd(List<Awardx> li) {
int rdmAwdIndex_may=randomx.random(li.size()-1);
System.out.println("may index::"+rdmAwdIndex_may);
Awardx awd=(Awardx) li.get(rdmAwdIndex_may);
int rdm=randomx.random(100);
core.log("--o42910: rdmAwdIndex_may--rdm--awd.prbblt"+String.valueOf(rdmAwdIndex_may)+"--"+String.valueOf(rdm)+"--"+String.valueOf(awd.prbblt));
if(rdm<awd.prbblt)
{
//bingo
return awd;
}
return null;
}
#---实际使用的扩展抽奖算法(带奖品送完判断和每用户最大中奖判断)
protected Awardx startAward(Integer actid, String uid) {
if (bingoedNum(uid,actid.toString()) >= perUserMaxBigonNum) {
return null;
}
List<ActAward> li = AwdListByActid(actid);
List<Awardx> li_fnl = listUtil.map_generic(li,
new Func_4SingleObj<ActAward, Awardx>() {
@Override
public Awardx invoke(ActAward o) {
// 上午08:53:09 2014-4-29
ActAward thisAwd = o;
Awardx awd = new Awardx();
awd.id = thisAwd.getId();
awd.name = thisAwd.getAwardName();
awd.prbblt = thisAwd.getRate();
return awd;
}
});
Awardx awd = com.attilax.award.AwdSvs.getBingoAwd(li_fnl);
if (awd == null)
return null;
if (awdOver(awd)) {
return null;
} else
return awd;
}
#-------网上的抽奖算法Php
/**
* 根据概率获取中奖号码
*/
private 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;
}
}
#----java版本的..
/**
* @category 获取中奖概率
*
*/
private static ActAward getAwardRand(List<ActAward> awardList) {
ActAward shootAward = null;
/*return shootAward = awardList.get(0);*/
//测试
if (awardList != null && awardList.size() > 0) {
int size = awardList.size();
int seed = 10000;
// 中奖总概率
for (ActAward aa : awardList) {
seed += aa.getRate();
}
// 循环奖项
for (int i = 0; i < size; i++) {
ActAward one = awardList.get(i);
Random rand = new Random();
// 获取1-100之间的概率
int randNum = rand.nextInt(seed);
logger.info("随机概率 >>> " + randNum);
// 中奖了
if (randNum <= i) {
shootAward = one;
break;
} else {
// 继续
seed -= one.getRate();
}
}
}
return shootAward;
}
参考
转轮抽奖的算法实现-Java-第七城市
php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法 - PHP教程_PHP编程_PHP开发技术文章 - 红黑联盟
PHP中奖概率的抽奖算法程序代码
paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.相关推荐
- paip 刮刮卡砸金蛋抽奖概率算法跟核心流程
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! paip ...
- 魔众抽奖系统 v2.0.0 上线超级砸金蛋抽奖方式
倾情发布,打造易用的抽奖系统 魔众抽奖系统发布v2.0.0版本,新功能和Bug修复累计14项,上线超级砸金蛋抽奖方式. 2021年08月19日魔众抽奖系统发布v2.0.0版本,增加了以下14个特性: ...
- 砸蛋程序php,魔众砸金蛋抽奖系统PHP源码 v2.0.0
魔众 魔众砸金蛋抽奖系统发布v2.0.0版本,新功能和Bug修复累计21项,支付抽奖,更有趣味的砸金蛋系统. 2020年07月23日魔众砸金蛋抽奖系统发布v2.0.0版本,增加了以下21个特性: – ...
- 简单的几句PHP生成美团3周年砸金蛋抽奖代码
一款界面风格十分漂亮的HTML5手机砸金蛋抽奖代码,适用于微信.手机移动端抽奖活动.简单的几句PHP生成美团3周年砸金蛋抽奖代码,不多说直接上源码: <!DOCTYPE html PUBLIC ...
- 砸金蛋java代码_java实现砸金蛋抽奖功能
本文实例为大家分享了java实现砸金蛋抽奖的具体代码,供大家参考,具体内容如下 代码如下 需求:用户每一次砸金蛋,抽中一等奖的概率为2% 二等奖10% 三等奖18% 四等奖70%. 累计砸第n次时必抽 ...
- php 砸金蛋抽奖,jQuery的砸金蛋抽奖代码
jQuery的砸金蛋抽奖代码 .egg { width: 750px; height: 500px; margin: 50px auto 20px auto; background: url(imag ...
- js砸金蛋抽奖js特效
下载地址 js砸金蛋抽奖特效代码,基于jquery实现的砸金蛋抽奖活动页面. dd:
- php+mysql砸金蛋抽奖程序系统
php砸金蛋抽奖程序模板,可设置背景音乐,可设置中奖概率,可以设置奖项,可设置抽奖码指定中奖.支持卡密,外部链接,实物 3种抽奖模式: 1.先登记资料,然后后抽奖, 2.匿名(无需登记,直接抽奖) 支 ...
- JAVA 砸金蛋抽奖的简单实现
代码如下 需求:用户每一次砸金蛋,抽中一等奖的概率为2% 二等奖10% 三等奖18% 四等奖70%. 累计砸第n次时必抽中x等奖以上的奖品.比如,累计砸第5次,则此次必中二等奖及以上的奖品.且配置的此 ...
- php 砸金蛋抽奖,jQuery抽奖砸金蛋代码
特效描述:jQuery抽奖 砸金蛋代码.请在PHP环境下砸蛋 代码结构 1. 引入JS 2. HTML代码 jquery+php 请在服务器环境运行才能看到敲蛋后的效果. 锤子 123 functio ...
最新文章
- 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码
- 交换机的linux测试脚本,更新网络设备巡检脚本,各位大神可以看看,如有不足,请指正!...
- 2.Liunx 系统设置
- 图像识别DM8127开发攻略——开发环境搭建
- java的CountDownLatch使用
- Patrol 7 架构下?的处理方法
- 大数据处理架构Hadoop
- java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
- 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...
- Akka-CQRS(16)- gRPC用JWT进行权限管理
- hive 的条件判断(if、coalesce、case)
- [剑指offer]面试题第[55-2]题[Leetcode][第110题][JAVA][平衡二叉树][DFS][剪枝]
- pcre-7.9编译安装出错[pcrecpp.lo] Error 1
- Oracle开源Fn,加入Serverless之争
- Seven Kinds of Testers - 七种类型的测试
- 华为交换机修改radius服务器地址,华为交换机radius认证-组网配置:pc+华为三层交换机+radius服务器(2003系统),求radius服务器的配置...
- python计算圆周率_用python程序求圆周率到任意位
- 两种常见的台式计算机,win7电脑定时关机的两种最常用方法【图文】
- NOD32升级ID,免费ID升级网址
- java微信分享朋友圈_Java实现微信公众平台朋友圈分享功能详细代码