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

public static List setDataSec(List instno) {

List result = new ArrayList();

String[] mon ={"2014-01","2014-02","2014-03","2014-04"};

int[] flag ={1,2,3,4,5};

List instnosub5 = new ArrayList();

for(int i=0;i

if(!instnosub5.contains(instno.get(i).substring(0,5))){

instnosub5.add(instno.get(i).substring(0,5));

}

}

//对于每个organValue,每个月,都有五个等级,对应flag prop

for(int i=0;i

for(int j=0;j

float[] prop = genProp();//注意:在此处产生随机概率

for(int k=0;k

InstSec inst=new InstSec();

inst.setInst_no_sub5(instnosub5.get(i));

inst.setSa_tx_m(mon[j]);

inst.setFlag(flag[k]);

inst.setProp(prop[k]);

result.add(inst);

}

}

}

return result;

}

public static float[] genProp(){

//产生概率随机数,且让和为1

float[] prop =new float[5];

int[] randInt =new int[5];

int sum=0;

for(int i=0;i<5;i++){

randInt[i]=1+(int)(Math.random()*10);

sum+=randInt[i];

}

DecimalFormat dF=new DecimalFormat(".00");

float sumprop=0;

for(int i=0;i<5;i++){

prop[i]= Float.parseFloat(dF.format(1.0*randInt[i]/sum));

//System.out.println("prop is "+prop[i]);

sumprop+=prop[i];

}

//System.out.println("sumprop is "+sumprop);

sumprop=Float.parseFloat(dF.format(sumprop));

if(sumprop<1)

prop[4]+=1-sumprop;

else

prop[4]-=sumprop-1;

//System.out.println("prop[4] is "+prop[4]);

return prop;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值