Java模拟抢红包算法
Java模拟抢红包算法
春节闲着无聊,来模拟一下抢红包算法。首先要确定抢红包的规则:
1:每个人都能抢到,且至少是1分钱。
2:所有的钱必须全部分完,所有人抢到的钱等于总金额。
3:每个人抢到的钱概率是相同的(不能先抢的就抢的多)。
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
* @author wk
* @date 2020/2/4 10:03
* 规则:
*
* 1.所有人抢到金额之和等于红包金额,不能超过,也不能少于。
*
* 2.每个人至少抢到一分钱。
*
* 3.要保证所有人抢到金额的几率相等。
*/
public class LuckDraw {
/**
*红包金额(单位:元)
*/
private static double money;
/**
* 红包金额(单位:分)
*/
private static int moneyFen;
/**
* 人数
* @param args
*/
private static int peopleNum;
/**
* 存放金额
* @param args
*/
private static List<Integer> list = new ArrayList();
/**
* 产生随机数
*/
private static Random random = new Random();
/**
* 存储产生的随机数
*/
private static int num;
/**
* 获得红包金额总数和总人数
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入红包金额:");
Scanner scanner = new Scanner(System.in);
money = scanner.nextDouble();
moneyFen = (int)money*100;
System.out.println("请输入抢红包总人数");
Scanner scanner1 = new Scanner(System.in);
peopleNum = scanner1.nextInt();
algor(moneyFen,peopleNum);
}
/**
* 红包算法
* @param moneyFen 单位为分的红包金额
* @param peopleNum 总人数
*/
public static void algor(int moneyFen, int peopleNum){
change(moneyFen,peopleNum);
for (int i = 0; i < list.size(); i++) {
double x= list.get(i)/100.00;
System.out.println("第"+(i+1)+"位红包金额:"+x+"元");
}
}
/**
* 利用递归产生随机金额红包
* @param moneyFen
* @param peopleNum
*/
public static void change(int moneyFen,int peopleNum){
if (peopleNum==1){
list.add(moneyFen);
return;
}
//确保红包金额大于0
num = random.nextInt(moneyFen/(peopleNum/2))+1;
list.add(num);
moneyFen = moneyFen-num;
peopleNum--;
change(moneyFen,peopleNum);
}
}
附运行效果图:
不足之处,欢迎留言指正,谢谢!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了