`
夏文权
  • 浏览: 242155 次
  • 性别: Icon_minigender_1
  • 来自: 贵州
社区版块
存档分类
最新评论

java 仿微信红包

 
阅读更多

随机红包生成规则:最小0.01;最大不能超过平均值

   /**
     * 随机红包
     * 计算每人获得红包金额;最小每人0.01元
     * @param mmm 红包总额
     * @param number 人数
     * @return
     */
    public static List<BigDecimal> genRandList(BigDecimal mmm, int number) {
        if (mmm.doubleValue() < number * 0.01) {
            return null;
        }
        Random random = new Random();
        // 金钱,按分计算 10块等于 1000分
        int money = mmm.multiply(BigDecimal.valueOf(100)).intValue();
        // 随机数总额
        double count = 0;
        // 每人获得随机点数
        double[] arrRandom = new double[number];
        // 每人获得钱数
        List<BigDecimal> arrMoney = new ArrayList<BigDecimal>(number);
        // 循环人数 随机点
        for (int i = 0; i < arrRandom.length; i++) {
            int r = random.nextInt((number) * 99) + 1;
            count += r;
            arrRandom[i] = r;
        }

        //计算平均值
        int average = money / number;
        // 计算每人拆红包获得金额
        int c = 0;
        for (int i = 0; i < arrRandom.length; i++) {

            int m = 0;
            // 每人获得随机数相加 计算每人占百分比
            Double x = new Double(arrRandom[i] / count);
            // 每人通过百分比获得金额
            m = (int) Math.floor(x * money);
            // 如果获得 0 金额,则设置最小值 1分钱
            if (m == 0) {
                m = 1;
            }

            //如果超出平均值,减1
            if (m > average) {
                m -= 1;
            }

            // 计算获得总额
            c += m;
            // 如果不是最后一个人则正常计算
            if (i < arrRandom.length - 1) {
                BigDecimal divide = new BigDecimal(m).divide(new BigDecimal(100));
                arrMoney.add(divide);
            } else {
                // 如果是最后一个人,则把剩余的钱数给最后一个人
                arrMoney.add(new BigDecimal(money - c + m).divide(new BigDecimal(100)));
            }
        }
        // 随机打乱每人获得金额
        Collections.shuffle(arrMoney);

        return arrMoney;


    }

 

分享到:
评论

相关推荐

    java实现微信红包发放

    在本文中,我们将深入探讨如何使用Java来实现微信红包发放的功能。微信红包是微信支付推出的一项功能,允许用户向其他用户发送一定金额的现金红包,这些红包可以被领取并直接转入接收者的微信钱包。实现这一功能涉及...

    Java代码实现微信红包功能

    在Java编程环境中,微信红包功能的实现涉及到一系列的面向对象设计、接口定义、类继承以及事件处理等技术。下面将详细解析这个项目的关键知识点。 首先,我们要理解微信红包的核心功能,包括红包发放、红包领取、...

    模仿微信发红包代码

    微信红包功能的实现涉及到随机算法、并发处理以及数据库操作等多个技术领域。下面,我们将深入探讨这个主题,以"模仿微信发红包代码"为背景,解析其中涉及的关键知识点。 首先,我们需要理解微信红包的基本逻辑。...

    微信支付 微信红包 JAVA 几行代码搞定

    本文将详细讲解如何使用JAVA实现微信支付、扫码支付和微信红包的接口调用,以及如何进行验签操作,使得整个支付流程安全可靠。 首先,微信支付涉及到的主要接口包括统一下单接口、查询订单接口、退款接口等。统一...

    javaNetty仿微信源码

    Java Netty 仿微信源码解析 在Java领域,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩的、高并发的服务器。本篇将深入探讨如何利用Java Netty框架来实现类似微信的功能,以及相关的技术...

    java 微信公众号发红包功能demo

    java 微信公众号发红包功能demo

    java微信红包支付案例 包括提供所需jar包

    java微信红包支付案例 包括提供所需jar包 是一个完整的测试项目 httpclient-4.3.1.jar httpclient-cache-4.3.1.jar httpcore-4.3.jar httpmime-4.3.1.jar fluent-hc-4.3.1.jar commons-logging-1.1.3.jar commons-...

    微信红包 JAVA

    微信红包JAVA是一款基于Java编程语言实现的微信红包功能的示例程序。在微信红包功能中,用户可以将一定金额的现金平均或者随机分配到若干个红包中,然后发送给微信好友或微信群。这个demo旨在帮助开发者理解如何在...

    Android仿打开微信红包动画效果实现代码

    Android仿打开微信红包动画效果实现代码 Android仿打开微信红包动画效果实现代码是指通过Android平台实现微信红包动画效果的代码实现,主要涉及到动画效果的实现、AnimationDrawable的使用、ImageView控件的使用等...

    微信发送红包证书

    微信发送红包功能是微信支付平台提供的一项服务,它允许用户向其他微信用户发送电子红包作为礼物...开发者需要具备扎实的技术基础,同时对金融交易的安全规范有深入的理解,才能成功地开发出稳定、安全的微信红包功能。

    Java 实现微信红包分配算法内含源码以及说明书可以自己运行复现.zip

    在本压缩包中,我们关注的是“Java 实现微信红包分配算法”。微信红包分配算法是微信支付中的一个重要功能,它确保了红包金额在随机分配时的公平性与趣味性。以下将详细介绍该算法的实现原理及相关的编程知识。 1. ...

    微信公众号现金红包java版

    微信公众号现金红包java版微信公众号现金红包java版微信公众号现金红包java版微信公众号现金红包java版

    微信企业红包 JAVA 实现

    在实现微信红包功能时,Spring可以帮助我们管理与微信接口交互的Service类,以及数据库操作的DAO类。 7. **Mybatis**:Mybatis是一个轻量级的持久层框架,它将SQL语句与JAVA代码分离,提供更灵活的数据库操作。在...

    Java实现仿微信红包分配规则

    Java实现仿微信红包分配规则是一种常见的编程练习,用于模拟微信红包的随机分配策略。下面将详细介绍这个过程: 1. **红包金额限制**:在微信红包的规则中,单个红包的最小金额为1分(即0.01元),最大为200元。在...

    java 实现微信抢红包算法.zip

    Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势...

    wxhbcj_java_微信抢红包_android_

    标题“wxhbcj_java_微信抢红包_android_”表明我们正在探讨一个关于在Android平台上使用Java编程语言实现微信红包自动抢夺功能的项目。这个项目可能是为了帮助用户自动接收和领取微信上的红包,从而提高抢红包的成功...

    微信发红包类 + 二维码类 + 批量下载类

    在IT行业中,微信红包、二维码和批量下载是常见的功能需求,尤其在开发微信相关的应用程序时。这个资源包提供了实现这些功能的PHP类和脚本,它们可以帮助开发者快速集成到自己的项目中。 首先,我们来看“微信发...

    微信红包源码微信CPA微信抽奖活动推广源码

    微信红包和微信抽奖活动在IT行业中是常见的移动互联网营销手段,尤其在微信平台上的应用非常广泛。微信红包源码和微信抽奖活动推广源码涉及到的技术和知识点主要包括以下几个方面: 1. **微信开放平台接口**:微信...

    Java微信支付-微信红包

    本篇文章介绍了Java微信支付-微信红包,可以实现微信公众号发红包功能,具有一定的参考价值,有需要的可以了解一下。

Global site tag (gtag.js) - Google Analytics