黑马程序员技术交流社区
标题:
关于用Java实现微信群发红包的逻辑
[打印本页]
作者:
来到精彩世界
时间:
2016-11-24 00:06
标题:
关于用Java实现微信群发红包的逻辑
<import java.util.Scanner;
import java.util.Random;
public class HongBao {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random rd=new Random();
System.out.println("请输入您要发的总金额...");
double mon=sc.nextDouble();
System.out.println();
System.out.println("请输入您要发的红包的数量...");
int num=sc.nextInt();
//System.out.println("Hello World!");
/*int[][] arr=new int[4][4];
arr[1][3]=3;s
System.out.println(arr[1][3]);*/
System.out.println();
int money=(int)(mon*100); //将金额转化为 分
int a=0; //记录已产生红包的总金额
double res=0.0; //存储当前红包的金额数;
for(int i=1;i<=num;i++) { //随机产生num个红包
if(i==num) {
res=(double)(money-a)/100;
}else {
int b=rd.nextInt(money-a-num+i)+1; //随机产生一个金额,金额的最大值为 总金额数-已发金额数
a+=b;
res=(double)b/100;}
System.out.println();
System.out.println("第"+i+"个红包的金额是:\t"+res);
}
}
}
>
我的大致思路是:
1.接收用户输入的红包总金额和要发的红包的个数,并将红包总金额扩大100倍,
2.在(总金额-剩余红包数)(为了保证每个红包至少有1分钱)的范围内产生一个随机数,将这个随机数的缩小100倍,作为第一个红包的金额。
3.在(总金额-已产生红包总金额-剩余红包数)的范围内产生一个随机数,将这个随机数的缩小100倍,作为第二个红包的金额。
4.重复3的操作,直至产生倒数第二个红包
5.用总金额-已产生红包总金额作为最后一个红包的金额
但是这样做有一个非常严重的问题,第一个红包的金额往往是最大的,最后一个红包的金额往往是最小的
不知道应该怎样改才比较完美,还请大神不吝赐教。
作者:
mjchzhl
时间:
2016-11-24 07:26
厉害,学习学习
作者:
peng84
时间:
2016-11-24 13:12
把红包分好了,放到list集合里,打乱再发不就行了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2