java生成红包的简单算法
2017-09-21 14:31
232 查看
Random random = new Random(); //总金额 int total = 10000;//所有金额都是以分为单位的(金融界) //红包数量 int num = 20; //最小红包 int min = 100; List<Integer> list = new ArrayList<Integer>(); int totalTmp = 0; for(int i = 0;i<num;i++){ int hongbao = 0; //预留红包(不然第一个红包很多,第二个也很大,后面的红包没钱了) Integer pre = min*(num-i-1); /*除以5 是为了随便生成的数太大,而导致红包分配不均匀() 这个数字越大,导致最后一个红包很大,其他的很小 */ hongbao = random.nextInt((total-pre-totalTmp)/5); hongbao = hongbao < min ? min : hongbao; if(i==num-1) { hongbao = total - totalTmp; } totalTmp += hongbao; list.add(hongbao); } System.out.println(list); Collections.shuffle(list);//重新洗牌打乱 System.out.println(list); //校验生成的红包总金额是否一致 int amount = 0; for (Integer a:list) { amount += a; } System.out.println("num"+list.size()); System.out.println(amount + " "+ total +" "+totalTmp); //生成的红包以队列的形式存入redis,抢红包时性能更好。
相关文章推荐
- JAVA实现 简单抢红包算法,模拟真实抢红包。
- python 实现红包随机生成算法的简单实例
- 抢红包的红包生成算法Java实现代码
- JAVA实现简单抢红包算法(模拟真实抢红包)
- Kruskal生成树算法的java代码简单实现
- Java抢红包的红包生成算法
- 简单随机红包生成java实现
- java,jsp生成UUID 超简单,只需一行代码
- Java读取网页内容并生成静态页面的简单实现
- 又一种JSP实现的Java通用简单分页算法
- java中的代码生成工具简单罗列
- Java iText PDF:用 iText 包生成简单的 pdf 文件 推荐
- java实现循环左移和右移的简单算法
- Java解决算法-最小生成树-克里斯卡尔算法
- 发布一个Java写的俄罗斯方块源码 算法简单(300行) 注释详细
- Ant生成一个简单的Java项目
- Java iText PDF:用 iText 包生成简单的 pdf 文件
- Java生成静态页面的简单方法和代码
- keytool生成证书 查看证书信息 ,以及java操作的简单用例
- 【技术收藏】enpaodelvzi编写:一个Java写的俄罗斯方块源码 算法简单(300行) 注释详细