软件编程
位置:首页>> 软件编程>> java编程>> JAVA实现红包分发的示例代码

JAVA实现红包分发的示例代码

作者:Evrse  发布时间:2022-10-08 06:18:15 

标签:JAVA,红包分发

大体思路

如果发总金额为 m的 n 个红包,先用一个长度为 n的临时数组 a 存放 n个随机双精度小数JAVA实现红包分发的示例代码 ,然后用  sum表示数组 a 的和,每个红包的金额JAVA实现红包分发的示例代码

代码


import java.util.Arrays;
import java.util.Random;
import java.math.*;
import java.util.Scanner;

public class Main {
public static long now_time;
public static long seed;
public static int[] get_red_packets(int money, int num) {
 Random random = new Random(seed);
 seed = random.nextLong();
 int[] res = new int[num];
 double[] temp=new double[num];
 double sum = 0;
 int sum2 = 0;
 for (int i = 0; i < num; i++) {
  temp[i] = random.nextDouble();
  sum += temp[i];
 }
 for (int i = 0; i < num; i++) {
  res[i] = 1+ (int)(temp[i] / sum * (money-num));
  sum2 += res[i]-1;
 }
 res[random.nextInt(num)]+=money-sum2-num;
 return res;
}

public static void show(int[] red_packet){
 System.out.println("红包 : " + Arrays.toString(red_packet));
}

public static void main(String[] args) {
 int num, money;
 Scanner scanner = new Scanner(System.in);
 now_time = System.currentTimeMillis();
 Random init_random = new Random(now_time);
 seed = init_random.nextLong();
 System.out.println("请输入要分发的红包数量:");
 num = scanner.nextInt();
 System.out.println("请输入要分发的红包总金额(分):");
 money = scanner.nextInt();
 int a[] = get_red_packets(money,num);
 show(a);
}
}

来源:https://blog.csdn.net/Evrse/article/details/110144412

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com