一个简单的抽奖(概率)小程序

最近在开发中接到一个抽奖(概率)的需求,需求如下:

用户在商品购买成功后,生成一个随机红包返还给购买用户。红包比例须在后台配置,如下所示:

  序号

红包金额

百分比(%)

1

10

60

2

20

30

3

50

10



本人的想法是,一次初始化所有的红包,入库保存,将未使用的红包放入redis中,用户购买成功后,生成一个随机红包返还给购买用户。


代码如下:


1.红包实体:

public class Packet {
private Integer num;//概率
private String obj;//批次号码
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getObj() {
return obj;
}
public void setObj(String obj) {
this.obj = obj;
}
@Override
public String toString() {
return "Packet [num=" + num + ", obj=" + obj + "]";
}

}


2.红包生成的工具类

/**
* 概率中奖
* @param random 随机数
* @param list 批次集合
* @return
*/
public static List<String> winAPrize(List<Packet> obj){
Integer count = 0;
int j = count;
//奖品集合
List<String> list = new ArrayList<String>();
//循环概率集合
for(int i = 0;i < obj.size();i++){
for( j = count;j<obj.get(i).getNum()+count;j++){
list.add(obj.get(i).getObj());
}
count = j;
System.err.println("**********"+count);
}
return list;
}


3.测试


public static void main(String[] args) {
List<Packet> list = new ArrayList<Packet>();
Packet packet = new Packet();
packet.setNum(10);
packet.setObj("srew343");

Packet packet2 = new Packet();
packet2.setNum(20);
packet2.setObj("ewrewrwe");

Packet packet3 = new Packet();
packet3.setNum(50);
packet3.setObj("hdhfdg");

list.add(packet);
list.add(packet2);
list.add(packet3);

List<String> result = winAPrize(list);
System.err.println("**********"+result+"************"+result.size());
Random random = new Random();
int num = random.nextInt(100);
System.err.println(">>>>>>>>>>>>>>"+result.get(num));

}


结果如下:

**********10
**********30
**********80
**********[srew343, srew343, srew343, srew343, srew343, srew343, srew343, srew343, srew343, srew343, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, ewrewrwe, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg, hdhfdg]************80


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值