根据20,80原则生成随机数据
2012-11-20 15:07
323 查看
package com.wzs; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 根据20,80原则生成数据,假如:0-100之间生成100次数,0-20之间要生成80次,30-100之间生成20次 */ public class RandomArray { // 数据生成区间 numberRandomStart -- numberRandomEnd private int numberRandomStart; private int numberRandomEnd; // 生成数据量 numberSum private int numberSum; /** * 默认空构造方法 */ public RandomArray() { } /** * 完整构造方法 * * @param numberRandomStart * 数据生成区间开始 * @param numberRandomEnd * 数据生成区间结束 * @param numberSum * 成成数据量 */ public RandomArray(int numberRandomStart, int numberRandomEnd, int numberSum) { this.numberRandomStart = numberRandomStart; this.numberRandomEnd = numberRandomEnd; this.numberSum = numberSum; } /** * 得到随机数组 * * @return 随机数组 */ public List<Integer> getRandomArrayList() { // 热数据需求总量 int hotNumberToteTimes = (int) (numberSum * 0.8); // 冷数据需求总量 int coldNumberToteTimes = numberSum - hotNumberToteTimes; List<Integer> randomArrayList = new ArrayList<Integer>(); // 默认热数据从numberRandomStart开始,占有数据总量的20% int hotNumberStart = numberRandomStart; int hotNumberEnd = (int) ((numberRandomEnd - numberRandomStart + 1) * 0.2) + numberRandomStart; // 添加热数据 for (int i = 0; i < hotNumberToteTimes; i++) { randomArrayList.add(getRandomNumber(hotNumberStart, hotNumberEnd)); } // 添加冷数据 for (int i = 0; i < coldNumberToteTimes; i++) { randomArrayList.add(getRandomNumber(hotNumberEnd, numberRandomEnd)); } // 生成原数据 System.out.println("数据长度:" + randomArrayList.size()); System.out.println("生成元数据:" + randomArrayList); Collections.shuffle(randomArrayList); System.out.println("打乱后数据:" + randomArrayList); return randomArrayList; } /** * 得到随机数 * * @param numberStart * 随机数开始位置 * @param numberEnd * 随机数结束为止 * @return */ public int getRandomNumber(int numberStart, int numberEnd) { int randomNumber = (int) Math.round(Math.random() * (numberEnd - numberStart) + numberStart); return randomNumber; } /** * 测试函数 * * @param args */ public static void main(String[] args) { RandomArray randomArray = new RandomArray(0, 10, 20); System.out.println(randomArray.getRandomArrayList()); } }
输出结果:
数据长度:20
生成元数据:[2, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 2, 0, 2, 10, 9, 7, 10]
打乱后数据:[0, 9, 2, 1, 2, 1, 10, 2, 0, 2, 10, 7, 1, 1, 1, 1, 0, 1, 1, 1]
[0, 9, 2, 1, 2, 1, 10, 2, 0, 2, 10, 7, 1, 1, 1, 1, 0, 1, 1, 1]
相关文章推荐
- 要求可以根据每个学生的成绩进行由高到低的排序如果成绩相等则按照年龄由低到高排序数据的样式如下张三:19:90|李四:20:90|王五:20:80|赵六:21:100
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
- mysql 生成随机时间 mysql 统计数量并根据最后面一个数据的时间排序
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串
- 根据数据字典表定义的表结构,生成创建表的SQL语句
- 如何根据内存数据生成位图
- 【zTree】zTree根据后台数据生成树并动态设置前面的节点复选框的选中状态
- MySQL 中根据规则生成随机密码
- EasyUI_tree根据数据库数据非迭代生成树形结构
- 如何使用Visual Studio 2010在数据库中生成随机测试数据
- jsp页面根据json数据动态生成table
- PowerDesigner根据数据库生成数据字典
- JPA注解:根据实体生成数据表和字段的注释(正向工程)
- JavaScript概率游戏抽奖根据cookie判断是否填写资料,从而显示相关的提示;判断元素下标是否在随机生成的数组中,有即让其抽奖
- 根据表中数据生成insert语句的存储过程
- 根据基本表结构及其数据生成 INSERT ... 的 SQL
- jQuery EasyUI:根据数据库内容生成适合于easyui-tree的JSON数据格式
- oracle根据时间对数据进行统计每天生成的量
- 根据表中数据生成insert语句的存储过程
- 对现有数据生成随机序列