微信抢红包算法

Posted hirampeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信抢红包算法相关的知识,希望对你有一定的参考价值。


 

微信抢红包算法: 

 

package test;

import java.util.Random;
import java.util.Scanner;
public class WeXinRedPakage {
public static void main(String[] args) {
RedPackage redPackage = new RedPackage();
Scanner scanner = new Scanner(System.in);
//下面两步应该做校验
redPackage.setRemainSize(5);//scanner.nextInt()scanner.nextInt()
redPackage.setRemainMoney(6);
double money = 0;
scanner.close();
for (int i = 0; i < 6; i++) {//假设6个人抢
money = redPackage.getRandomMoney();
System.out.println(money);
}
}
}
class RedPackage{
private double remainSize;
private double remainMoney;
public double getRemainSize() {
return remainSize;
}
public void setRemainSize(int remainSize) {
this.remainSize = remainSize;
}
public double getRemainMoney() {
return remainMoney;
}
public void setRemainMoney(int remainMoney) {
this.remainMoney = remainMoney;
}
public  double getRandomMoney() {
        // remainSize 剩余的红包数量
        // remainMoney 剩余的钱
if (this.getRemainSize()<1) {
System.out.println("_______");
return 0;
}
        if (this.remainSize == 1) {
        remainSize--;
        double money = Math.round(remainMoney * 100);
            return (money / 100);
        }
        Random r     = new Random();
        double min   = 0.01; //
        double max   = remainMoney / remainSize * 2;
        double money = r.nextDouble() * max;
        money = money > min ? money : min;
        money = Math.floor(money * 100) ;
        money = money/100;
        remainSize--;
        remainMoney -= money;
        System.out.println("-------------");
        return money;
    }
}

 顺便讲一下指定概率算法思路:

 1.按概率生成所有可能的结果放入容器

 2.使用一个随机数(在指定抽奖次数范围)去访问这个容器, 获得并移除容器这个值并返回

 3.抽奖一次操作一次,一直到到次数用完为止,这时候容器为零

 此算法还不完善,欢迎指点。

以上是关于微信抢红包算法的主要内容,如果未能解决你的问题,请参考以下文章

微信抢红包算法实现(JAVA)

微信抢红包算法实现(JAVA)

微信抢红包神器怎么用,微信抢红包神器图文使用方法

java 实现仿照微信抢红包算法,实测结果基本和微信吻合,附demo

微信抢红包

微信抢红包收支明细账单怎么列