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的更多相关文章

  1. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1.5导致的报错format函数第二个参数不对,要求是Object[])

    package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...

  2. java保留小数位数

    System.out.println(String.format("%.5f",new Main().minRadius(n,m)));

  3. Java学习-047-数值格式化及小数位数四舍五入

    此小工具类主要用于数值四舍五入.数值格式化输出,很简单,若想深入研究,敬请自行查阅 BigDecimal 或 DecimalFormat 的 API,BigDecimal.setScale(位数,四舍 ...

  4. java 保留小数点后N位数(若干位),几种实现的方式总结

    import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;/** * java ...

  5. Java指定保留小数位数的方法

    package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...

  6. java如何获取一个double的小数位数

    前言 看标题是不是觉得这是一个很简单的问题,我一开始也是这么认为的,但是实际情况下,在各种情况下我们都进行了测试,发现很多实际情况是无法不尽如人意的. 方法分析 当前能想到的比较容易有下面几种 1.直 ...

  7. Java中的引用类型Scanner类和随机类型Random

    Scanner类 我们要学的Scanner类是属于引用数据类型,我们先了解下引用数据类型.   引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. ...

  8. BigDecimal的四则运算及小数位数格式

    一.加法 BigDecimal b1 = new BigDecimal("20");BigDecimal b2 = new BigDecimal("30");B ...

  9. C# decimal保留指定的小数位数,不四舍五入

    decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...

随机推荐

  1. java ecplise配置

    运行java项目首先配置java运行时环境:Window->Preferences->Java->Installed JREs 修改为jdk:C:\Program Files\Jav ...

  2. Jetson TX2安装tensorflow(原创)

    Jetson TX2安装tensorflow 大致分为两步: 一.划分虚拟内存 原因:Jetson TX2自带8G内存这个内存空间在安装tensorflow编译过程中会出现内存溢出引发的安装进程奔溃 ...

  3. 移动端 滑动删除 swipeDelete

    功能比较简单常见,最近整理一下做备份记录.先看看线上 整体实际效果 下面是swipeDelete 用法 demo 默认参数 var defaults = { distance:80, //滑动距离 u ...

  4. 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界

    欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...

  5. 浅谈计算机中的IO模型

    IO模型一共有5种: blocking IO #阻塞IO nonblocking IO #非阻塞IO IO myltiplexing #IO多路复用 signal driven IO #信号驱动IO ...

  6. Jmeter_打印当前时间戳&打印偏移时间戳

    Jmeter中提供了一种函数,可以打印时间戳,如下图 年: yyyy 月:MM 日:dd 时: HH 分: mm 秒:ss 关于时间戳的格式,可以自由组合定义,这里我写成这样 yyyy-MM-dd H ...

  7. UOJ#219. 【NOI2016】优秀的拆分 [后缀数组 ST表]

    #219. [NOI2016]优秀的拆分 题意:求有多少AABB样子的子串,拆分不同的同一个子串算多个 一开始一直想直接求,并不方便 然后看了一眼Claris的题解的第一行就有思路了 如果分开,求\( ...

  8. [Python Study Notes]电池信息

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  9. Quartz.NET 3.0 正式发布

    Quartz.NET是一个强大.开源.轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等.在2017 ...

  10. Git 如何 clone 非 master 分支的代码

    问题描述 我们每次使用命令 git clone git@gitlab.xxx.com:xxxxx.git 默认 clone 的是这个仓库的 master 分支.如果最新的代码不在 master 分支上 ...