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

 更新时间:2021年03月29日 11:56:47   作者:Evrse  
这篇文章主要介绍了JAVA实现红包分发的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

大体思路

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

代码

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);
 }
}

到此这篇关于JAVA实现红包分发的示例代码的文章就介绍到这了,更多相关JAVA 红包分发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • JAVA中4种解析XML文件的方法

    JAVA中4种解析XML文件的方法

    这篇文章主要介绍了JAVA中4种解析XML文件的方法,文中示例代码非常详细,帮助大家更好的了解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java NIO实现聊天系统

    Java NIO实现聊天系统

    这篇文章主要为大家详细介绍了Java NIO实现聊天系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • WIN7系统JavaEE(java)环境配置教程(一)

    WIN7系统JavaEE(java)环境配置教程(一)

    这篇文章主要介绍了WIN7系统JavaEE(java+tomcat7+Eclipse)环境配置教程,本文重点在于java配置,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 一文详解JDK21中虚拟线程

    一文详解JDK21中虚拟线程

    虚拟线程是JDK19中引入的,JDK21正式发布,本文主要介绍了JDK21中虚拟线程,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • SpringData @Query和@Modifying注解原理解析

    SpringData @Query和@Modifying注解原理解析

    这篇文章主要介绍了SpringData @Query和@Modifying注解原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • springboot详解整合swagger方案

    springboot详解整合swagger方案

    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 Restful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步
    2022-07-07
  • Java中Base64和File之间互转代码示例

    Java中Base64和File之间互转代码示例

    这篇文章主要给大家介绍了关于Java中Base64和File之间互转的相关资料,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法,需要的朋友可以参考下
    2023-08-08
  • SpringBoot 图形验证码的生成和校验

    SpringBoot 图形验证码的生成和校验

    随着系统和业务的不停升级,前后端代码放在一起的项目越来越臃肿,已经无法快速迭代和职责区分了,于是纷纷投入了前后端分离的怀抱,发现代码和职责分离以后,开发效率越来越高了,但是以前的验证码登录方案就要更改了。本文来看一下SpringBoot 图形验证码的生成和校验
    2021-05-05
  • 使用ByteArrayOutputStream实现将数据写入本地文件

    使用ByteArrayOutputStream实现将数据写入本地文件

    这篇文章主要介绍了使用ByteArrayOutputStream实现将数据写入本地文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 深入学习java内存化和函数式协同

    深入学习java内存化和函数式协同

    这篇文章主要介绍了深入学习java内存化和函数式协同,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06

最新评论