java运气红包_教你用java做个微信红包,自己做运气王!
*/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做个微信红包,自己做运气王!相关推荐
- java爬虫 京东_教您使用java爬虫gecco抓取JD全部商品信息(一)
#教您使用java爬虫gecco抓取JD全部商品信息(一) ##gecco爬虫 如果对gecco还没有了解可以参看一下gecco的github首页.gecco爬虫十分的简单易用,JD全部商品信息的抓取 ...
- java api 英文_教你查阅Java API 英文文档(JDK 11)
然后找到"Specifications"并点击 API Documentation 比如我们在别人的源码里看到了 方法[也叫函数]: Scanner input = new Sc ...
- java实现筛选_教你用Java web实现多条件过滤功能
生活中,当你闲暇之余浏览资讯的时候,当你搜索资料但繁杂信息夹杂时候,你就会想,如何更为准确的定位需求信息.今天就为你带来: 分页查询 需求分析:在列表页面中,显示指定条数的数据,通过翻页按钮完成首页/ ...
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java 判断类型_如何快速入门Java编程学习(干货)
一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...
- 支持java虚拟主机_为何缺乏支持Java的虚拟主机
现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...
- java必读书籍_最佳5本Java性能调优书籍–精选,必读
java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...
- java future用法_纯干货:Java学习过程中的21个知识点和技术点
我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...
- java笔试题_一道简单的 Java 笔试题,但值得很多人反思
专注于Java领域优质技术,欢迎关注 作者:匿蟒 前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问 ...
最新文章
- 微信公众号点击菜单即可打开并登录微站的实现方法
- JPA-CascadeType四个属性的讲解
- 有关python方面的论文_一篇文章可以带你理解python中的类
- 妙用通配符证书发布多个安全站点
- 基于java的程序启动出错Could not create the Java virtual machine
- Java连载1-概述常用的dos命令
- sql学习之笔记(时间)季度的第一天
- Jeecg 切换默认首页方法
- Nginx只允许域名访问网站,禁止使用IP 访问80,443端口
- UVA10579 Fibonacci Numbers【大数】
- MySql数据库下载和安装
- Linux学习笔记(6)
- WPS入门StackPanel与Grid
- Android 权限清单大全
- 如何免费下载外文文献
- vue动态加载页面组件
- 计算机地质制图CAD,计算机辅助地质制图
- 软件是指示计算机运行所需的程序,计算机基础知识A.ppt
- 论文解读-DeepMove: Predicting Human Mobility with Attentional Recurrent Networks
- IntelliJ IDEA中怎么查看方法说明
热门文章
- 盘点四个Web3社交项目
- fastjson类型转换大全
- PyQt5快速开发与实战.pdf分享
- 云计算PaaS及多云管理厂商BoCloud博云宣布完成D轮融资
- CSS3新技术:圆角、透明、阴影和大小
- Redis —— Redis In Action —— Redis 实战—— 基础篇 —— Redis 的常见命令解析 以及 Redis 结合客户端的快速上手使用—— SpringData Redis
- 行测笔试题型(语病题总结)
- 双边网格学习、Bilateral Learning
- Attention is all you need新翻译架构的测试
- 通过springboot+mybatis-plugs实现通过手机号,邮箱,账号登录