JAVA实现红包分发的示例代码
作者:Evrse 发布时间:2022-10-08 06:18:15
标签: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);
}
}
来源:https://blog.csdn.net/Evrse/article/details/110144412


猜你喜欢
- 背景WebView是在APP中,可以很方便的展示web页面,并且与web交互APP的数据。方便,并且更新内容无需APP发布新版本,只需要将最
- 目前在公司做一个小东西,里面用到了 FFmpeg 简单处理音视频,感觉功能特别强大,在做之前我写了一个小例子,现在记录一下分享给大家,希望大
- 前言图片作为内存消耗大户,一直是开发人员尝试优化的重点对象。Bitmap的内存从3.0以前的位于native,到后来改成jvm,再到8.0又
- ShapeDrawable是一种很常见的Drawable,可以理解为通过颜色来构造的图形,它既可以是纯色的图形,也可以是具有渐变效果的图形,
- 在我们移动应用开发过程中,偶尔有可能会接到这种需求:1、在手机桌面创建一个窗口,类似于360的悬浮窗口,点击这个窗口可以响应(至于窗口拖动我
- 本文实例为大家分享了Android Studio实现智能聊天的具体代码,供大家参考,具体内容如下1、布局activit_main.xml&l
- 在你布局或者组件混用的时候你可能会发现 gridview 的九宫格没有完全在页面上显示,只是显示了一个局部(第一行)只有一个滚动条,还不能上
- 一、判断字母string str = Console.ReadLine();if (char.isLetter(str)){}else if
- 目录前言生活中的Future模式场景1:场景2Future模式中的主要角色实现一个简单的Future模式Java中的Future模式Futu
- 本文实例为大家分享了Android实现闪屏页效果的具体代码,供大家参考,具体内容如下1.效果图2.闪屏页逻辑及布局2.1 activity_
- 1、相差秒public double DiffSeconds(DateTime startTime,DateTime endTime){ &
- 本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。1.拷贝代码仓库从
- 概览阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。并表示在6-8个
- 前言CMake是一个跨平台的安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake可以说已经成为大部分C++开源项目标配
- 本文实例为大家分享了Unity实现ScrollView滑动吸附的具体代码,供大家参考,具体内容如下最近在做一个展示模块的时候遇到了一个需要实
- 本文实例为大家分享了java实现猜拳小游戏的具体代码,供大家参考,具体内容如下实现下图要求public class User {privat
- /// <summary> /// 将日期字
- 本文实例为大家分享了SeekBar拖动条的应用代码,供大家参考,具体内容如下目标效果在该页面中放一个拖动条的状态提示信息,一个拖动条以及一个
- 先给大家这是下效果图:谷歌提供的v4包,ViewPager在布局文件中,先添加<android.support.v4.view.Vie
- 背景某项目,客户要求使用已有的 weblogic 部署已经开发好的 springboot,于是乎对 springboot 进行了部分配置的调