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自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...
随机推荐
- oracle 查看最大连接数与当前连接数
select count(*) from v$process --当前的连接数 select value from v$parameter where name = 'processes' --数据库 ...
- struts2 添加请求后缀的3种方式
第一种方式在struts.xml文件中添加 <constant name="struts.action.extension" value="">&l ...
- Activity的setContentView的流程
最简单的Activity中的内容大致是这样的: public class MainActivity extends Activity { @Override public void onCreate( ...
- Jetson TX2安装固态硬盘(原创)
SSD on Jetson TX2 注意事项:在断电情况下,将固态硬盘的接线与Jetson TX2进行连接 步骤: 一.jetson tx2开机,打开搜索栏中的Disks 二.Disks显示画面 三. ...
- 记React+.NetCore API实现动态列导出
1.效果演示 2.用到的第三方类库 前端:React,Dva,Antd 后端:ASP.NET CORE,System.Linq.Dynamic.Core,EPPlus.Core 3.基本思路 第一:E ...
- 【C++】bazel的使用
bazel的使用 bazel是google开源的构建工具,可以支持多种语言的构建.这里来尝试一下如何在C++项目中使用bazel构建. 安装就不介绍了,在官网很详细,输入bazel --help: U ...
- ElasticSearch 6 Windows 安装
前言 目前使用ElasticSearch 6.2最新版本,这里记录其在windows 2012R2系统上的安装步骤. 安装 1. 安装java,最新版本的ElasticSearch 需要java8 版 ...
- 分组密码的工作模式--wiki
密码学中,块密码的工作模式允许使用同一个块密码密钥对多于一块的数据进行加密,并保证其安全性.[1][2] 块密码自身只能加密长度等于密码块长度的单块数据,若要加密变长数据,则数据必须先被划分为一些单独 ...
- 洛谷 [P1119] 灾后重建
我们发现每次询问都是对于任意两点的,所以这是一道多源最短路径的题,多源最短路径,我们首先想到floyd,因为询问的时间是不降的,所以对于每次询问,我们将还没有进行松弛操作的的点k操作. #includ ...
- hdu 4609 3-idiots [fft 生成函数 计数]
hdu 4609 3-idiots 题意: 给出\(A_i\),问随机选择一个三元子集,选择的数字构成三角形的三边长的概率. 一开始一直想直接做.... 先生成函数求选两个的方案(注意要减去两次选择同 ...