产生任意数
来源:互联网 发布:nginx下载windows 编辑:程序博客网 时间:2024/05/17 22:36
以下代码主要实现的功能:
1、产生任意整数
2、产生任意double
3、产生任意区间整数
4、产生任意区间double类型数值
5、产生任意区间整数,并在区间内,可再定义一个小区间,小区间生成的数值占总区间的比率,可任意定制。
package com.paincupid.springmvc.util;import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Random;/** * 产生任意数 * @author paincupid * @since 2016.07.11 */public class GenRandomValue { private static Random random = new Random((new Date()).getTime()); public static Integer randomInt(){ return random.nextInt(); } public static Integer randomPositiveInt(){ return Math.abs(random.nextInt()); } /** * 产生最小mix,最大max的随机任意 * @param mix * @param max * @return * random.nextInt(100); 这行代码将生成范围 0~100 之间的随机数,有趣的是,取值可能为 0 ,但不可能为 100。我们用中学数学课学习的区间表示法,表示为:[0, 100)。 */ public static Integer randomRegionInt(int mix, int max){ return random.nextInt(max - mix + 1) + mix; } /** * 产生最小值mix到最大值max,size个整数;其它区间begin~end之间的整数占比为rate * 举个例子:randomRegionInt(20, 1, 10, 8, 9, 0.2); 生产1~10之间的10个整数,其中8~9区间的整数占比20% * @param size 生产多少个整数 * @param mix 生产的最小整数 * @param max 生产的最大整数 * @param begin 生产整数区间最小值 * @param end 生产整数区间最大值 * @param rate 区间最小值和最大值在整个生产的总个数所占的比率 * @return */ public static List<Integer> randomRegionInt(int size, int mix, int max, int begin, int end, double rate){ List<Integer> list = new ArrayList<Integer>(size); int targetRateSize = (int)(size*rate); for(int i=0; i<targetRateSize; i++){ list.add(random.nextInt(end - begin + 1) + begin); } int rest = size - targetRateSize; for(int i=0; i<rest; i++){ int value = 0; while(true){ value = random.nextInt(max - mix + 1) + mix; if((value>mix && value<begin) || (value>end&& value<max)){ list.add(value); break; } } } return list; } public static Double randomRegionDouble(int mix, int max){ double value = random.nextDouble()*(max-mix)+mix; BigDecimal bd = new BigDecimal(value); value = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return value; } public static void main(String[] args) { System.out.println("randomInt: "+ randomInt()); System.out.println("randomPositiveInt: "+ randomPositiveInt()); System.out.println("randomRegionInt: "+ randomRegionInt(7,10)); List<Integer> list = randomRegionInt(10, 1, 10, 8, 9, 0.2); int count = 0; for (Integer val : list) { if(val == 8 || val ==9){ count++; } } DecimalFormat df = new DecimalFormat("0.00"); float num= (float)count/list.size(); System.out.println("count: "+ count+", rate: " + df.format(num)); }}
转载请注明来源:paincupid csdn专栏
http://blog.csdn.net/paincupid/article/details/51873941
0 0
- 产生任意数
- VB 源码 产生任意数之间随机数,支持负数
- 产生任意随机数发生器
- 产生数
- 产生数
- 产生数
- 产生数
- 产生数
- 产生数
- 任意数_任意多个任意数相乘
- 任意数的排列组合
- 任意排序几个数
- 任意数比较大小
- 任意十个数求和
- 任意数二进制转化
- 组合数模任意数
- 产生一万个随即数
- 【图论】【RQNOJ】产生数
- java 集合之ArrayList集合元素重复删除
- hdu 1863 畅通工程 (最小生成树)
- 欢迎使用CSDN-markdown编辑器
- 基于Android实现保存图片到本地并可以在相册中显示出来
- JAVA学习笔记three:异常
- 产生任意数
- 【C语言】C语言概述
- lib and dll
- CSP考试 2013年12月第5题 I’m stuck! C语言实现
- 新的起点,新的开始——我又回来了
- HTTP返回码总结
- HDU1085(母函数)
- swift 高仿爱鲜蜂
- BZOJ 1798: [Ahoi2009]Seq 维护序列seq