java:产生小数位数为2的随机概率,使得和为1
public static List<InstSec> setDataSec(List<String> instno) {
List<InstSec> result = new ArrayList<InstSec>();
String[] mon ={"2014-01","2014-02","2014-03","2014-04"};
int[] flag ={1,2,3,4,5}; List<String> instnosub5 = new ArrayList<String>();
for(int i=0;i<instno.size();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<instnosub5.size();i++){
for(int j=0;j<mon.length;j++){
float[] prop = genProp();//注意:在此处产生随机概率
for(int k=0;k<flag.length;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;
}
注意:向SQL中传参数的下标是从1开始,java的substring方法从0开始
java:产生小数位数为2的随机概率,使得和为1的更多相关文章
- java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])
package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...
- java保留小数位数
System.out.println(String.format("%.5f",new Main().minRadius(n,m)));
- Java学习-047-数值格式化及小数位数四舍五入
此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍 ...
- java 保留小数点后N位数(若干位),几种实现的方式总结
import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;/** * java ...
- Java指定保留小数位数的方法
package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...
- java如何获取一个double的小数位数
前言 看标题是不是觉得这是一个很简单的问题,我一开始也是这么认为的,但是实际情况下,在各种情况下我们都进行了测试,发现很多实际情况是无法不尽如人意的. 方法分析 当前能想到的比较容易有下面几种 1.直 ...
- Java中的引用类型Scanner类和随机类型Random
Scanner类 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. ...
- BigDecimal的四则运算及小数位数格式
一.加法 BigDecimal b1 = new BigDecimal("20");BigDecimal b2 = new BigDecimal("30");B ...
- C# decimal保留指定的小数位数,不四舍五入
decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...
随机推荐
- SQL Server 2005的服务器角色(public)的问题
SQL Server 默认会有9个服务器角色,而且这些角色是不能删除和新增.修改的.关于这些角色相关介绍和权限,请参考 其中有一个特殊的角色public,任何登录都会属于该角色,它只拥有的权限是VIE ...
- spring boot热部署
1.pom配置 参考:http://412887952-qq-com.iteye.com/blog/2300313 2.intellij配置 参考:http://blog.csdn.net/wjc47 ...
- linux 搭建PPTP
pptp简介 PPTP,Point to Point Tunneling Protocol,点对点隧道协议,这是一种支持多协议虚拟专用网络(VPN)技术.远程用户能够通过装有点对点协议的系统安全访问公 ...
- springboot(十九):使用Spring Boot Actuator监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题? ...
- css选择器:nth-child()与:nth-of-type()的差异
:nth-child()和:nth-of-type()都是Css3中的伪类选择器,其作用相似却又不完全相同. 名词解释 :nth-child()选择器匹配其父元素的第n个子元素,不论元素类型. :nt ...
- Trusted Execution Technology (TXT) --- 基本原理篇
版权声明:本文为博主原创文章,未经博主允许不得转载. http://www.cnblogs.com/tsec/p/8409600.html 1. Intel TXT 介绍 TXT是Trusted Ex ...
- sphinx的再创造coreseek的安装过程
CoreSeek详细安装过程:coreseek-3.2.14.tar.gz下载链接: http://pan.baidu.com/s/1o6DNesE 解压缩安装mmseg分词程序: .tar.gz c ...
- Apache自带的rotatelogs实现日志轮转
用Apache自带的rotatelogs程序处理apache生成的日志自动截断重新生成,rotatelogs是一个配合Apache管道日志功能使用的简单程序.设置方法如下: 编辑Apache的主配置文 ...
- 分离Webpack开发环境与生产环境的配置
这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- Springboot security cas源码陶冶-FilterSecurityInterceptor
前言:用户登录信息校验成功后,都会获得当前用户所拥有的全部权限,所以对访问的路径当前用户有无权限则需要拦截验证一发 Spring security过滤器的执行顺序 首先我们需要验证为啥FilterSe ...