// 随机数
private static final String NUMBER_VALUE = "0123456789";
private static Random random = new Random();
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("a", "5");
map.put("b", "2");
map.put("c", "2");
map.put("d", "1");
for (int v = 1; v <= 10; v++) {
System.out.println("第" + v + "批次执行");
int aT = 0;
int bT = 0;
int cT = 0;
int dT = 0;
for (int i = 0; i < 1000; i++) {
String result = weightRandom(map);
if (result.equals("a")) {
aT++;
} else if (result.equals("b")) {
bT++;
} else if (result.equals("c")) {
cT++;
} else if (result.equals("d")) {
dT++;
}
}
System.out.println("a出现" + aT + "次");
System.out.println("b出现" + bT + "次");
System.out.println("c出现" + cT + "次");
System.out.println("d出现" + dT + "次");
}
}
/**
* @Description 方法描述:权重随机
* @author leon 2018年1月26日 下午3:54:32
* @CopyRight leon
* @param map
* @return
*/
public static String weightRandom(Map<String, String> map) {
Set<String> keySet = map.keySet();
List<String> weights = new ArrayList<String>();
for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
String weightStr = it.next();
int weight = Integer.valueOf(map.get(weightStr));
for (int i = 0; i <= weight; i++) {
weights.add(weightStr);
}
}
int idx = getRandomNum(weights.size());
return weights.get(idx);
}
/**
* 方法实现描述:生成随机数(纯数字)
*
* @author leon 2016年8月11日下午12:55:02
* @param numberLength 随机数位数
* @return String
*/
public static String getRandom(int numberLength) {
// 定义验证码所取值
StringBuffer strCode = new StringBuffer();
// 生成四位数随机验证码内容
for (int i = 0; i < numberLength; i++) {
strCode.append(NUMBER_VALUE.charAt(getRandomNum(NUMBER_VALUE.length())));
}
return strCode.toString();
}
/**
* 方法实现描述:生成随机数
*
* @author leon 2016年8月11日下午12:54:36
* @param maxNumber 最大数
* @return int
*/
public static int getRandomNum(int maxNumber) {
return random.nextInt(maxNumber);
}
private static final String NUMBER_VALUE = "0123456789";
private static Random random = new Random();
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("a", "5");
map.put("b", "2");
map.put("c", "2");
map.put("d", "1");
for (int v = 1; v <= 10; v++) {
System.out.println("第" + v + "批次执行");
int aT = 0;
int bT = 0;
int cT = 0;
int dT = 0;
for (int i = 0; i < 1000; i++) {
String result = weightRandom(map);
if (result.equals("a")) {
aT++;
} else if (result.equals("b")) {
bT++;
} else if (result.equals("c")) {
cT++;
} else if (result.equals("d")) {
dT++;
}
}
System.out.println("a出现" + aT + "次");
System.out.println("b出现" + bT + "次");
System.out.println("c出现" + cT + "次");
System.out.println("d出现" + dT + "次");
}
}
/**
* @Description 方法描述:权重随机
* @author leon 2018年1月26日 下午3:54:32
* @CopyRight leon
* @param map
* @return
*/
public static String weightRandom(Map<String, String> map) {
Set<String> keySet = map.keySet();
List<String> weights = new ArrayList<String>();
for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
String weightStr = it.next();
int weight = Integer.valueOf(map.get(weightStr));
for (int i = 0; i <= weight; i++) {
weights.add(weightStr);
}
}
int idx = getRandomNum(weights.size());
return weights.get(idx);
}
/**
* 方法实现描述:生成随机数(纯数字)
*
* @author leon 2016年8月11日下午12:55:02
* @param numberLength 随机数位数
* @return String
*/
public static String getRandom(int numberLength) {
// 定义验证码所取值
StringBuffer strCode = new StringBuffer();
// 生成四位数随机验证码内容
for (int i = 0; i < numberLength; i++) {
strCode.append(NUMBER_VALUE.charAt(getRandomNum(NUMBER_VALUE.length())));
}
return strCode.toString();
}
/**
* 方法实现描述:生成随机数
*
* @author leon 2016年8月11日下午12:54:36
* @param maxNumber 最大数
* @return int
*/
public static int getRandomNum(int maxNumber) {
return random.nextInt(maxNumber);
}