关于微信红包的一些算法可能性
来源:互联网 发布:襄阳seo 编辑:程序博客网 时间:2024/06/04 23:32
仅仅做了一个Demo,波动数字不建议输入超过0.5
import java.math.BigDecimal;import java.util.ArrayList;import java.util.Random;/** * Created by 草鱼狂飙 on 2016/9/28. * <p> * 描述: */public class RedPackets { public static void main(String[] args) { for (int i = 0; i < 10000; i++) { ArrayList<Double> nums = getNums(7777.00, 10, 0.3); printArrayList(nums); System.out.println("================================" + getSumFormArrayList(nums)); } } /** * @param total 收红包的总数 * @param num 人数 * @param variance 上下偏差 * @return 返回红包数组 */ private static ArrayList<Double> getNums(Double total, int num, double variance) { Random random = new Random(System.currentTimeMillis()); double average = total / num; double varianceFloat = average * variance; ArrayList<Double> moneys = new ArrayList<>(); for (int i = 0; i < num; i++) { moneys.add(average - varianceFloat + random.nextDouble() * varianceFloat * 2); } Double surplus = total - getSumFormArrayList(moneys); for (int i = 0; i < num; i++) { moneys.set(i, moneys.get(i) + surplus / num); } for (int i = 0; i < moneys.size(); i++) { moneys.set(i, new BigDecimal(moneys.get(i)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); } surplus = total - getSumFormArrayList(moneys); surplus = new BigDecimal(surplus).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); int randomindex = random.nextInt(num - 1); moneys.set(randomindex, moneys.get(randomindex) + new BigDecimal(surplus).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); return moneys; } private static Double getSumFormArrayList(ArrayList<Double> vlistdata) { BigDecimal result = new BigDecimal(0.00); for (int i = 0; i < vlistdata.size(); i++) { result = new BigDecimal(vlistdata.get(1)).add(result); } return result.doubleValue(); } private static void printArrayList(ArrayList<Double> vlistdata) { for (int i = 0; i < vlistdata.size(); i++) { System.out.println("第" + (i + 1) + "个红包:" + vlistdata.get(i)); } }}
0 0
- 关于微信红包的一些算法可能性
- 微信红包的算法
- 微信红包算法
- 微信红包算法
- 微信红包算法
- 微信红包算法
- 微信红包算法
- 微信红包算法
- 微信红包算法?
- 参考微信红包的抢红包算法
- 微信红包的算法实现
- JAVA版的微信红包算法
- 微信红包的随机算法
- 微信红包的算法实现探讨
- 浅谈微信红包的算法
- 微信红包的一种生成算法
- 微信红包金额分配的算法
- [算法] -- 微信红包算法
- 四元数转化为欧拉角
- eclipse停止logcat自动滚动
- [数据结构]第一章-思维题
- java多线程与线程间通信
- QT中 No such file or directory 问题解决
- 关于微信红包的一些算法可能性
- 序章
- .Net 高效开发之不可错过的实用工具
- 第十章 String()
- Unity开发学习路线在哪里【蓝鸥Unity学习路线】
- asm技术学习
- 勾股数圆整程序
- smarty的replace陷阱
- "==" 和 .equals()方法的区别