本文介绍了java 根据设置的概率生成随机数的方法,分享给大家
import java.util.arraylist;
import java.util.hashmap;
import java.util.list;
import java.util.map;
import java.util.random;
public class randomtest {
// string 可以为任意类型 也可以自定义类型
static map keychancemap = new hashmap();
static {
keychancemap.put("aaa", 500);
keychancemap.put("bbb", 1500);
keychancemap.put("ccc", 2000);
keychancemap.put("ddd", 3000);
keychancemap.put("eee", 3000);
}
public static void main(string[] args) {
map count = new hashmap();
list list = new arraylist<>();
string item = null;
for (int i = 0; i < 10000; i++) {
item = chanceselect(keychancemap);
list.add(item);
if (count.containskey(item)) {
count.put(item, count.get(item) + 1);
} else {
count.put(item, 1);
}
}
for (string id : count.keyset()) {
system.out.println(id + "\t出现了 " + count.get(id) + " 次");
}
random rand = new random();
int num = rand.nextint(10000);
system.out.print("最终选择的随机数为:"+list.get(num));
}
public static string chanceselect(map keychancemap) {
if (keychancemap == null || keychancemap.size() == 0)
return null;
integer sum = 0;
for (integer value : keychancemap.values()) {
sum += value;
}
// 从1开始
integer rand = new random().nextint(sum) + 1;
for (map.entry entry : keychancemap.entryset()) {
rand -= entry.getvalue();
// 选中
if (rand <= 0) {
string item = entry.getkey();
return item;
}
}
return null;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!