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.刮刮卡砸金蛋抽奖概率算法跟核心流程.相关推荐

  1. paip 刮刮卡砸金蛋抽奖概率算法跟核心流程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! paip ...

  2. 魔众抽奖系统 v2.0.0 上线超级砸金蛋抽奖方式

    倾情发布,打造易用的抽奖系统 魔众抽奖系统发布v2.0.0版本,新功能和Bug修复累计14项,上线超级砸金蛋抽奖方式. 2021年08月19日魔众抽奖系统发布v2.0.0版本,增加了以下14个特性: ...

  3. 砸蛋程序php,魔众砸金蛋抽奖系统PHP源码 v2.0.0

    魔众 魔众砸金蛋抽奖系统发布v2.0.0版本,新功能和Bug修复累计21项,支付抽奖,更有趣味的砸金蛋系统. 2020年07月23日魔众砸金蛋抽奖系统发布v2.0.0版本,增加了以下21个特性: – ...

  4. 简单的几句PHP生成美团3周年砸金蛋抽奖代码

    一款界面风格十分漂亮的HTML5手机砸金蛋抽奖代码,适用于微信.手机移动端抽奖活动.简单的几句PHP生成美团3周年砸金蛋抽奖代码,不多说直接上源码: <!DOCTYPE html PUBLIC ...

  5. 砸金蛋java代码_java实现砸金蛋抽奖功能

    本文实例为大家分享了java实现砸金蛋抽奖的具体代码,供大家参考,具体内容如下 代码如下 需求:用户每一次砸金蛋,抽中一等奖的概率为2% 二等奖10% 三等奖18% 四等奖70%. 累计砸第n次时必抽 ...

  6. php 砸金蛋抽奖,jQuery的砸金蛋抽奖代码

    jQuery的砸金蛋抽奖代码 .egg { width: 750px; height: 500px; margin: 50px auto 20px auto; background: url(imag ...

  7. js砸金蛋抽奖js特效

    下载地址 js砸金蛋抽奖特效代码,基于jquery实现的砸金蛋抽奖活动页面. dd:

  8. php+mysql砸金蛋抽奖程序系统

    php砸金蛋抽奖程序模板,可设置背景音乐,可设置中奖概率,可以设置奖项,可设置抽奖码指定中奖.支持卡密,外部链接,实物 3种抽奖模式: 1.先登记资料,然后后抽奖, 2.匿名(无需登记,直接抽奖) 支 ...

  9. JAVA 砸金蛋抽奖的简单实现

    代码如下 需求:用户每一次砸金蛋,抽中一等奖的概率为2% 二等奖10% 三等奖18% 四等奖70%. 累计砸第n次时必抽中x等奖以上的奖品.比如,累计砸第5次,则此次必中二等奖及以上的奖品.且配置的此 ...

  10. php 砸金蛋抽奖,jQuery抽奖砸金蛋代码

    特效描述:jQuery抽奖 砸金蛋代码.请在PHP环境下砸蛋 代码结构 1. 引入JS 2. HTML代码 jquery+php 请在服务器环境运行才能看到敲蛋后的效果. 锤子 123 functio ...

最新文章

  1. 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码
  2. 交换机的linux测试脚本,更新网络设备巡检脚本,各位大神可以看看,如有不足,请指正!...
  3. 2.Liunx 系统设置
  4. 图像识别DM8127开发攻略——开发环境搭建
  5. java的CountDownLatch使用
  6. Patrol 7 架构下?的处理方法
  7. 大数据处理架构Hadoop
  8. java 取整_javascript 解决默认取整的坑(目前已知的最佳解决方案)
  9. 华为手机像素密度排行_2020上半年手机芯片十大排行:华为麒麟990第四,骁龙865第一...
  10. Akka-CQRS(16)- gRPC用JWT进行权限管理
  11. hive 的条件判断(if、coalesce、case)
  12. [剑指offer]面试题第[55-2]题[Leetcode][第110题][JAVA][平衡二叉树][DFS][剪枝]
  13. pcre-7.9编译安装出错[pcrecpp.lo] Error 1
  14. Oracle开源Fn,加入Serverless之争
  15. Seven Kinds of Testers - 七种类型的测试
  16. 华为交换机修改radius服务器地址,华为交换机radius认证-组网配置:pc+华为三层交换机+radius服务器(2003系统),求radius服务器的配置...
  17. python计算圆周率_用python程序求圆周率到任意位
  18. 两种常见的台式计算机,win7电脑定时关机的两种最常用方法【图文】
  19. NOD32升级ID,免费ID升级网址
  20. java微信分享朋友圈_Java实现微信公众平台朋友圈分享功能详细代码

热门文章

  1. NGN学习笔记2——软交换技术
  2. 动态 | AI能看懂英文,阿里巴巴夺实体发现测评全球第一
  3. 《中国人工智能学会通讯》——1.20 聊天机器人研究存在的挑战
  4. VS2010 TFS 如何把一个项目添加到源代码管理中及其他管理
  5. 分享自己喜欢的无损高音质音乐给大家
  6. 借用implicit创建我们自己的布尔数据类型-create MyBool data type by implicit
  7. P1491 集合位置
  8. python - 安装/解释器/变量
  9. 日志异常处理-spring aop注解
  10. 《现代前端技术解析》第七章读书笔记