JAVA版的微信红包算法
2016-05-03 19:39
429 查看
比如发一个总额为50元的红包,总共分5个:
第一个:在0~10元之间随机产生一个数,作为这一个红包的钱数,设为x1:
第二个:剩下的钱为(50-x1),然后在0~(50-x1)/(5-1)随机一个数,作为这份的钱数,设x2
。。。
第5份:剩下的钱为(50-x1-x2-...x4),系统由0~(50-x1-x2-...-xn-1)/(5-4)随机一个数,作为这个份的钱数,设为xn
首先定义一个红包类:
写一个调用方法getRandomMoney,返回值类型为double,定义最小值和最大值,当红包数量remainNum为1时,直接返回remainMoney,
测试一下
第一个:在0~10元之间随机产生一个数,作为这一个红包的钱数,设为x1:
第二个:剩下的钱为(50-x1),然后在0~(50-x1)/(5-1)随机一个数,作为这份的钱数,设x2
。。。
第5份:剩下的钱为(50-x1-x2-...x4),系统由0~(50-x1-x2-...-xn-1)/(5-4)随机一个数,作为这个份的钱数,设为xn
首先定义一个红包类:
<span style="font-family:SimSun;font-size:18px;">public class Money { // remainNum剩余的红包数量 // remainMoney 剩余的钱 public static int remainNum; public static double remainMoney; }</span>
写一个调用方法getRandomMoney,返回值类型为double,定义最小值和最大值,当红包数量remainNum为1时,直接返回remainMoney,
<span style="font-family:SimSun;font-size:18px;">public static double getRandomMoney(Money myMoney) { // remainSize 剩余的红包数量 // remainMoney 剩余的钱 // 随机,额度在0.01和(剩余平均值*2)之间 double min= 0.01; double max= myMoney.remainMoney / myMoney.remainNum * 2; if (myMoney.remainNum == 1) { myMoney.remainNum--; return (double) Math.round(myMoney.remainMoney * 100) / 100; } Random r= new Random(); double money = r.nextDouble() * max; money = money <= min ? 0.01: money; money = Math.floor(money * 100) / 100; myMoney.remainNum--; myMoney.remainMoney -= money; return money; }</span>
测试一下
<span style="font-family:SimSun;font-size:18px;">public static void main(String[] args) { // TODO Auto-generated method stub Money m=new Money(); m.remainNum=5; int count=m.remainNum; m.remainMoney=50; for(int i=1;i<=count;i++){ System.out.println("第"+i+"次获取的红包为"+getRandomMoney(m)+"元"); } } </span>结果:
相关文章推荐
- 微信第三方开发:处理消息和事件页面发送文字信息
- Android小程序-Walker注册页面(五)
- 微信开发本地测试环境搭建
- IOS开发之——类似微信摇一摇的功能实现
- Android 分享到微信6.0后好友、朋友圈
- 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
- 作业七——“南通大学教务管理系统微信公众号” 用户体验分析
- 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
- 微信公众平台开发入门教程
- “南通大学教务管理系统微信公众号” 用户体验分析
- 文科生也会搭的微信个人号后台
- 微信支付之二三事
- Android LrcCache和DiskLruCache相结合打造图片加载框架(仿微信图片选择,照片墙)
- android小程序(一)
- 微信支付回调接口务必做sign签名验证
- 微信支付的证书文件安全
- java微信开发API解析(七)-网页开发-微信网页授权
- 作业七—“南通大学教务管理系统微信公众号”用户体验分析
- 用户体验设计案例分析 # “南通大学教务管理系统微信公众号” 用户体验分析
- Java小程序之可视化日历