以下说明均为简要说明,略去大量细节,仅供理论学习之用。 一. 表结构说明 “ITEM_ID” NUMBER, //奖品项编号 “ITEM_NAME” NVARCHAR2(50),//奖品项名称 “SUM” NUMBER, //该奖品项的总数量 “MAX4DAY” NUMBER, //一天可出奖的最大输了 “ISDEFAULT” NUMBER DEFAULT 0, //是否是默认中奖项(必须有且仅可有一条记录) “SUM_CURRENT” NUMBER DEFAULT 0, //当前已出奖数量 “SUM_DAY_CURRENT” NUMBER DEFAULT 0, //当日已出奖数量 “RATE” NUMBER(38,8) //中奖率 二. 原理及中奖率设置说明 (数据仅为示例) 我们假设有10个奖品项目,分别为奖品1-10,示例中奖率设置如下: 奖品1—0.05 奖品2—0.05 奖品3—0.4 奖品4—0.6 奖品5—0.1 奖品6—0.1 奖品7—0.1 奖品8—0.15 奖品9—0.2 奖品10—默认 程序的中奖流程逻辑: 1. 定义一个足够大的数值如:10000 (实际为了更精确的控制中奖率,数值会远比这个数值更大); 2. 随机生成一个大于1而小于上面定义的最大值的整数。(要注意随机函数是否真的随机,可以用IP或时间戳做随机数的初始化(java)),我们假定此次生成的数字: 521; 3. 判断获得的随机数字对应的中奖区间,依据奖项中奖率和流程1中定义的最大值,可以很容易得到 […]
Tags: 抽奖