您的位置:首页 > 编程语言 > Java开发

根据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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐