*/public class RedPacketUtil {

//微信红包的最大值和最小值,和最大红包金额系数

private static final float MINMUM = 0.01f;

private static final float MAXMUM = 200.00f;

private static final float TIMES = 2.1f;

//判断当前金额和数量是否正确

public boolean isRight(float money,int count){

//计算当前平均值

float ave = (float)money / count;

if(ave < MINMUM){

return false;

}else if(ave > MAXMUM){

return false;

}

return true;

}

//生成每个具体红包的金额

public float redPacket(float money, float min, float maxs, int count) {

//判断当前人数

if(count == 1){

//确保红包不小于0.01元

money = money > MINMUM ? money : MINMUM;

return (float)(Math.round(money 100)) / 100;

}

float max = maxs > money ? money : maxs;

//生成单个红包数量,且保证红包的精度

float one = (float) (Math.random()(max - min) + min);

one = (float)(Math.round(one * 100)) / 100;

float moneyRest = (money - one);

//判断当前红包数量是否合理

if(isRight(moneyRest,count - 1)){

return one;

}else{

//重新分配红包

float ave = (float)moneyRest / (count-1);

if(ave < MINMUM){

return redPacket(money,min,one,count);

}else if(ave > MAXMUM){

return redPacket(money,one,max,count);

}

}

return one;

}

//拆分红包,生成具体的红包数

public List splitRedPacket(float money,int count){

//判断当前金额和数量是否正确

if(!isRight(money,count)){

return null;

}

//记录每个红包的数量

List rpList = new ArrayList();

//单个红包的最大金额

float max = (float)(money * TIMES)/ count ;

max = max > MAXMUM ? MAXMUM : max;

float one = 0;

//开始记录每个红包的数量

for(int i = 0;i < count;i++){

one = redPacket(money,MINMUM,max,count-i);

rpList.add(one);

money = money - one;

}

return rpList;

}

public static void main(String[] args) {

RedPacketUtil util = new RedPacketUtil();

List result = util.splitRedPacket(200, 10);

System.out.println(result);

//验证金额总数

float sum = 0;

for(float i : result){

sum = sum + i;

}

System.out.println(sum);

}}

java运气红包_教你用java做个微信红包,自己做运气王!相关推荐

  1. java爬虫 京东_教您使用java爬虫gecco抓取JD全部商品信息(一)

    #教您使用java爬虫gecco抓取JD全部商品信息(一) ##gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全部商品信息的抓取 ...

  2. java api 英文_教你查阅Java API 英文文档(JDK 11)

    然后找到"Specifications"并点击 API Documentation 比如我们在别人的源码里看到了 方法[也叫函数]:  Scanner input = new Sc ...

  3. java实现筛选_教你用Java web实现多条件过滤功能

    生活中,当你闲暇之余浏览资讯的时候,当你搜索资料但繁杂信息夹杂时候,你就会想,如何更为准确的定位需求信息.今天就为你带来: 分页查询 需求分析:在列表页面中,显示指定条数的数据,通过翻页按钮完成首页/ ...

  4. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  5. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  6. 支持java虚拟主机_为何缺乏支持Java的虚拟主机

    现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...

  7. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

  8. java future用法_纯干货:Java学习过程中的21个知识点和技术点

    我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...

  9. java笔试题_一道简单的 Java 笔试题,但值得很多人反思

    专注于Java领域优质技术,欢迎关注 作者:匿蟒 前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问 ...

最新文章

  1. 微信公众号点击菜单即可打开并登录微站的实现方法
  2. JPA-CascadeType四个属性的讲解
  3. 有关python方面的论文_一篇文章可以带你理解python中的类
  4. 妙用通配符证书发布多个安全站点
  5. 基于java的程序启动出错Could not create the Java virtual machine
  6. Java连载1-概述常用的dos命令
  7. sql学习之笔记(时间)季度的第一天
  8. Jeecg 切换默认首页方法
  9. Nginx只允许域名访问网站,禁止使用IP 访问80,443端口
  10. UVA10579 Fibonacci Numbers【大数】
  11. MySql数据库下载和安装
  12. Linux学习笔记(6)
  13. WPS入门StackPanel与Grid
  14. Android 权限清单大全
  15. 如何免费下载外文文献
  16. vue动态加载页面组件
  17. 计算机地质制图CAD,计算机辅助地质制图
  18. 软件是指示计算机运行所需的程序,计算机基础知识A.ppt
  19. 论文解读-DeepMove: Predicting Human Mobility with Attentional Recurrent Networks
  20. IntelliJ IDEA中怎么查看方法说明

热门文章

  1. 盘点四个Web3社交项目
  2. fastjson类型转换大全
  3. PyQt5快速开发与实战.pdf分享
  4. 云计算PaaS及多云管理厂商BoCloud博云宣布完成D轮融资
  5. CSS3新技术:圆角、透明、阴影和大小
  6. Redis —— Redis In Action —— Redis 实战—— 基础篇 —— Redis 的常见命令解析 以及 Redis 结合客户端的快速上手使用—— SpringData Redis
  7. 行测笔试题型(语病题总结)
  8. 双边网格学习、Bilateral Learning
  9. Attention is all you need新翻译架构的测试
  10. 通过springboot+mybatis-plugs实现通过手机号,邮箱,账号登录