写微信红包随机算法思想

大致思路:
1,先输入微信红包大小
2,输入红包的个数
3,先将红包的钱数,通过范围,不断在区间进行抽取,
如:红包钱数100,红包个数5 ,第一个红包的在(1,100)之间抽取,加入抽取的红包为40.则第二个红包再(1,60)之间抽取,以此类推。
4,再讲每份红包随机发放。

首先:先进行随机数的学习。
关于java.util.Random提供的类

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Random r = new Random();//随机数函数
        for(int i = 1;i<10;i++) {
            System.out.println(20+r.nextInt(10));//此代码的意思为,在范围(20,30)之间来随机取int型数据
        }
    }

nextInt()中的整数值是在这个基础上添加的的范围。
可以利用此来进行红包大小瓜分。

/*
     * 思路:
     * 定义红包数目
     * 需要一个变量来减掉每次提取的红包,并输出这个红包数目,
     * 并需要一个变量来进行来表示剩下红包的多少,
     * 当最后一个红包时,不用再随机了,直接输出
     * 
     * 遇到的问题,当前面的红包过大,不够后面分的时候,不行。
     * 所以每个红包的数目必须对剩下的红包都有分配,则必须对剩下的红包都留个备份,每个红包留一块钱,则剩下的钱就进行随机。
     * 当对下一个的时候,则需要将一块钱加上上次剩下的红包钱数。
     * 
     * */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Random r=new Random();//随机数函数
        int next;//用来存放下一个钱数的最大值
        int m = 0;//进行对剩下红包
        for(int i = 1;i<=10;i++) {
            next = 1+r.nextInt(100-m-10+i);//为剩下的红包每个红包留一块钱,防止接下来的红包不够分。
            m = m+next;
            System.out.println(next);
            if(i==9)//当最后一个红包时,直接输出。
            {
                System.out.println(100-m);
                break;//跳出循环
            }
        }
    }

以上代码虽然瓜分了100块,但是不好的影响是后面的红包大多为一块钱。。

你可能感兴趣的:(java)