微信红包首先将金额M元按照要发的人数N分成随机的N个金额不等的红包份额。生成N个份之后,用户请求到了就将1份红包发个用户。
生成红包金额数的算法采用线段切割法:将金额看成一条线段,线段的长度范围是0到M*100,首先需要生成1~(M*100-1) 中间的(N-1)个随机的且不重复的数,可以使用这(N-1)个数去切割线段,切割后的每一份就是红包的金额数。
具体代码实现如下:
import java.math.BigDecimal; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.*; /** * 微信红包首先将金额M元按照要发的人数N分成随机的N个金额不等的红包份额。生成N个份之后,用户请求到了就将1份红包发个用户 * 生成红包金额数的算法采用线段切割法:将金额看成一条线段,线段的长度范围是0到M*100,首先需要生成1~(M*100-1) * 中间的(N-1)个随机的且不重复的数,可以使用这(N-1)个数去切割线段,切割后的每一份就是红包的金额数。 */ public class Main { /** * @param args */ public static void main(String[] args) { exe(200,5); } /** * * @param amount 红包金额 * @param friend 发出的红包数 */ private static void exe(int amount,int friend){ int seed = 100 * amount;//将金额数按照一分钱来等分100*amount分 int length = 0; int m_length = friend-1;//在0~seed中生成m_length个随机不重复的数字 //利用SecureRandom生成随机数 SecureRandom secureRandom = null; //保证不重复且升序排序 SortedSet<Integer> set = new TreeSet<>(); try { secureRandom = SecureRandom.getInstance("SHA1PRNG"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } while (length < m_length){ int num = secureRandom.nextInt(seed); if(num == 0) num = 1; set.add(num); length = set.size(); } int preNum = 0; int currentNum = 0; int calc = 0; for (int i = 0; i < set.toArray().length+1 ; i++) { if (i < set.toArray().length){ currentNum = (int)set.toArray()[i]; }else { currentNum = seed; } System.out.println("第" +(i+1) +"个红包"); System.out.println("红包金额=" + new BigDecimal((currentNum - preNum)).divide(new BigDecimal(100)) + "元"); calc += (currentNum - preNum); System.out.println("已发:" +new BigDecimal(calc).divide(new BigDecimal(100)) + "元"); preNum = currentNum; } } }
相关推荐
微信小程序用户授权-首页-登录master.zip微信小程序用户授权-首页-登录master.zip微信小程序用户授权-首页-登录master.zip微信小程序用户授权-首页-登录master.zip微信小程序用户授权-首页-登录master.zip微信小程序...
微信小程序 滴滴公交-查公交 (源码)微信小程序 滴滴公交-查公交 (源码)微信小程序 滴滴公交-查公交 (源码)微信小程序 滴滴公交-查公交 (源码)微信小程序 滴滴公交-查公交 (源码)微信小程序 滴滴公交-查公交 (源码)...
微信小程序源码 IT-EBOOK(学习版)微信小程序源码 IT-EBOOK(学习版)微信小程序源码 IT-EBOOK(学习版)微信小程序源码 IT-EBOOK(学习版)微信小程序源码 IT-EBOOK(学习版)微信小程序源码 IT-EBOOK(学习版)微信小程序源码...
微信小程序 小游戏-别踩白块 (源码)微信小程序 小游戏-别踩白块 (源码)微信小程序 小游戏-别踩白块 (源码)微信小程序 小游戏-别踩白块 (源码)微信小程序 小游戏-别踩白块 (源码)微信小程序 小游戏-别踩白块 (源码)...
微信小程序源码 电商-拼团 倒计时(学习版)微信小程序源码 电商-拼团 倒计时(学习版)微信小程序源码 电商-拼团 倒计时(学习版)微信小程序源码 电商-拼团 倒计时(学习版)微信小程序源码 电商-拼团 倒计时(学习版)微信...
微信小游戏源码 游戏-勇士斗恶龙(仅用于学习参考)微信小游戏源码 游戏-勇士斗恶龙(仅用于学习参考)微信小游戏源码 游戏-勇士斗恶龙(仅用于学习参考)微信小游戏源码 游戏-勇士斗恶龙(仅用于学习参考)微信小...
PHP微信通用SDKwechat-php-sdk-master.zip
html5微信小游戏源码 游戏-勇士斗恶龙(仅用于参考)html5微信小游戏源码 游戏-勇士斗恶龙(仅用于参考)html5微信小游戏源码 游戏-勇士斗恶龙(仅用于参考)html5微信小游戏源码 游戏-勇士斗恶龙(仅用于参考)...
微信小程序——IT-EBOOK(截图+源码).zip 微信小程序——IT-EBOOK(截图+源码).zip 微信小程序——IT-EBOOK(截图+源码).zip 微信小程序——IT-EBOOK(截图+源码).zip 微信小程序——IT-EBOOK(截图+源码).zip ...
微信小程序——d-AppleMusic(截图+源码).zip 微信小程序——d-AppleMusic(截图+源码).zip 微信小程序——d-AppleMusic(截图+源码).zip 微信小程序——d-AppleMusic(截图+源码).zip 微信小程序——d-Apple...
微信小程序——电商-拼团 倒计时(截图+源码).zip 微信小程序——电商-拼团 倒计时(截图+源码).zip 微信小程序——电商-拼团 倒计时(截图+源码).zip 微信小程序——电商-拼团 倒计时(截图+源码).zip 微信小...
微信小程序项目源码-微信的设备故障报修管理系统设计与实现+ssm框架.zip微信小程序项目源码-微信的设备故障报修管理系统设计与实现+ssm框架.zip微信小程序项目源码-微信的设备故障报修管理系统设计与实现+ssm框架....
微信小程序是一种轻量级的应用开发平台,主要针对移动端,由腾讯公司推出,旨在提供便捷的、无需下载安装即可使用的线上服务。本主题聚焦于微信小程序的组件应用与实际开发,通过一系列DEMO来深入理解其核心功能和...
在开发小程序的时候需要获取用户信息权限和用户手机号码,该组件使用弹窗的方式让用户点击确认授权:使用showUserInfoPopup();显示用户信息授权弹窗,使用showPhoneInfoPopup();显示用户电话号码授权弹窗
微信3.1.0.41逆向-微信3.1.0.41HOOK接口(WeChatHelper3.1.0.41.dll)-MFC调用实例方法源码
微信红包封面制作小程序源码。新手小白适用微信红包封面制作小程序源码。新手小白适用微信红包封面制作小程序源码。新手小白适用微信红包封面制作小程序源码。新手小白适用微信红包封面制作小程序源码。新手小白适用...
130个微信小程序源码--[www.sumer.work]130个微信小程序源码--[www.sumer.work]130个微信小程序源码--[www.sumer.work]130个微信小程序源码--[www.sumer.work]130个微信小程序源码--[www.sumer.work]130个微信小程序...
微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码-二维码生成器.zip微信小程序源码...
微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...
微信小程序毕业设计-微信小程序-时间管理小程序源码.zip 95分以上课程设计,代码完整下载即用无需修改,确保可以运行。也可作为期末大作业和课程设计。 安装教程 导入到微信开发者工具 配置云开发环境 创建云...