如何在Java中生成一个随机数,(使用Eclipse)加权到某些数字?
例如,我有100个数字,每个数字可以在1%的时间内同等选择。但是,如果某个数字(即5)在该100中显示8次,则现在有8%的机会被随机选择,而其他数字仍为1%。
如何编写一个随机生成器,为我提供10个数字,并给出数字5,显示8%的优势?
谢谢,如果我没有解释清楚,我很抱歉。
答案 0 :(得分:0)
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);list.add(2);// to be continued ...
int randomInt = list.get((int) (Math.random() * list.size()));
System.out.println(randomInt);
}
您将获得您的值列表,然后您只需随机选择索引并获取值
Math.random()
将在[0; 1 [中选择一个值[,如果你乘以10个元素的List
的大小),你会在[0; 10 [,[]中找到一个值当你作为int
投射时,你将获得10种索引可能性以查看List
ArrayList
(List
的实施)允许重复元素,所以:
如果您添加1,2,2,3,4,5,6,7,8,9(顺序无关紧要),您将拥有10个元素,每个元素都可以找到 1/10 = 10/100 = 10%概率(又称机会),但出现两次的元素2将有 20%在该方法中被选择的机会,更多数字出现的更多& #39;有机会选择增加,如你所说(数字显示的时间数)/(元素总数)(这是基本数学)