java:产生小数位数为2的随机概率,使得和为1(转)

Posted 北回归线的喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:产生小数位数为2的随机概率,使得和为1(转)相关的知识,希望对你有一定的参考价值。

参考https://www.cnblogs.com/kxdblog/p/4197831.html

package com.thesis.Method1;

import java.text.DecimalFormat;


public class MainSolution {


private static final int NUM = 5;
public static void main(String[] args){

for(float f :genProp()){
System.out.println(f );
}
}


public static float[] genProp(){
//产生概率随机数,且让和为1
float[] prop =new float[NUM];
int[] randInt =new int[NUM];
int sum=0;
for(int i=0;i<NUM;i++){
randInt[i]=1+(int)(Math.random()*10);
sum+=randInt[i];
}
DecimalFormat dF=new DecimalFormat(".00");
float sumprop=0;
for(int i=0;i<NUM;i++){
prop[i]= Float.parseFloat(dF.format(1.0*randInt[i]/sum));
sumprop+=prop[i];
}
sumprop=Float.parseFloat(dF.format(sumprop));
if(sumprop<1){
prop[NUM-1]+=1-sumprop;
}
else {
prop[NUM - 1] -= sumprop - 1;
}
return prop;

}

}

以上是关于java:产生小数位数为2的随机概率,使得和为1(转)的主要内容,如果未能解决你的问题,请参考以下文章

请问java生成任意位数的随机数

java如何实现这样的随机数字呢?

shell怎么产生一个随机数,要求是0到1之间的,小数位数是16位

如何理解概率分布的分位数和上侧分位数?

分位数和上侧分位数如何定义?

excel中RAND函数产生随机数的概率控制