用户登录
用户注册

分享至

按一定的概率随机出随机数(小白记录)

  • 作者: 灬跪求粉色木耳灬
  • 来源: 51数据库
  • 2021-09-27

项目场景:

按一定的概率随机出随机数
例如:项目场景:项目需要每天凌晨0点准时发布,农场操作任务:如浇水,施肥,除草,除虫等,需要按一定的比例随机出每天的任务操作


解决方案:

提示:获得一个双精度随机数
double random = Math.random();
大致思路:将1分成100份,按生成数的区间划分数出现的范围
如:想要出现1的次数占比40%,生成随机数若小于40,则输出 1

实现代码

public class RandomTest{
  	/**
  	*
  	*/
    public int getRandom(){

        double a = 0.4;

        double b = 0.25;

        double c = 0.2;

        double d = 0.15;
        //获得一个双精度随机数
        double random = Math.random();
        System.out.println("random:"+random);
        if(random<=a){
            return 1;
        }
        if(random > a && random <= a+b){
            return 2;
        }
        if(random > a+b && random <= a+b+c){
            return 3;
        }
        if (random > a+b+c){
            return 4;
        }else {
            return -1;
        }
    }

    public static void main(String[] args) {
        double a = 0;
        double c = 0;
        double d = 0;
        double b = 0;
        double f = 0;
        for( int i = 0; i<1000;i++){
            RandomTest randomTest  = new RandomTest();
            int random = randomTest.getRandom();
            System.out.println("输出数:"+random);
            if(random==1){
                a++;
            }
            if(random==2){
                b++;
            }
            if(random==3){
                c++;
            }
            if(random==4){
                d++;
            }
        }
        System.out.println("1 出现:"+a+" 概率:"+a/(a+b+c+d)*100);
        System.out.println("2 出现:"+b+" 概率:"+b/(a+b+c+d)*100);
        System.out.println("3 出现:"+c+" 概率:"+c/(a+b+c+d)*100);
        System.out.println("4 出现:"+d+" 概率:"+d/(a+b+c+d)*100);
        System.out.println("生成次数:"+(a+b+c+d));
    }
}

软件
前端设计
程序设计
Java相关