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自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...
随机推荐
- java ecplise配置
运行java项目首先配置java运行时环境:Window->Preferences->Java->Installed JREs 修改为jdk:C:\Program Files\Jav ...
- Jetson TX2安装tensorflow(原创)
Jetson TX2安装tensorflow 大致分为两步: 一.划分虚拟内存 原因:Jetson TX2自带8G内存这个内存空间在安装tensorflow编译过程中会出现内存溢出引发的安装进程奔溃 ...
- 移动端 滑动删除 swipeDelete
功能比较简单常见,最近整理一下做备份记录.先看看线上 整体实际效果 下面是swipeDelete 用法 demo 默认参数 var defaults = { distance:80, //滑动距离 u ...
- 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界
欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...
- 浅谈计算机中的IO模型
IO模型一共有5种: blocking IO #阻塞IO nonblocking IO #非阻塞IO IO myltiplexing #IO多路复用 signal driven IO #信号驱动IO ...
- Jmeter_打印当前时间戳&打印偏移时间戳
Jmeter中提供了一种函数,可以打印时间戳,如下图 年: yyyy 月:MM 日:dd 时: HH 分: mm 秒:ss 关于时间戳的格式,可以自由组合定义,这里我写成这样 yyyy-MM-dd H ...
- UOJ#219. 【NOI2016】优秀的拆分 [后缀数组 ST表]
#219. [NOI2016]优秀的拆分 题意:求有多少AABB样子的子串,拆分不同的同一个子串算多个 一开始一直想直接求,并不方便 然后看了一眼Claris的题解的第一行就有思路了 如果分开,求\( ...
- [Python Study Notes]电池信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Quartz.NET 3.0 正式发布
Quartz.NET是一个强大.开源.轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等.在2017 ...
- Git 如何 clone 非 master 分支的代码
问题描述 我们每次使用命令 git clone git@gitlab.xxx.com:xxxxx.git 默认 clone 的是这个仓库的 master 分支.如果最新的代码不在 master 分支上 ...