JAVA - 如何生成一个加权到某些数字的随机数?

时间:2017-06-26 15:19:42

标签: java random

如何在Java中生成一个随机数,(使用Eclipse)加权到某些数字?

例如,我有100个数字,每个数字可以在1%的时间内同等选择。但是,如果某个数字(即5)在该100中显示8次,则现在有8%的机会被随机选择,而其他数字仍为1%。

如何编写一个随机生成器,为我提供10个数字,并给出数字5,显示8%的优势?

谢谢,如果我没有解释清楚,我很抱歉。

1 个答案:

答案 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

ArrayListList的实施)允许重复元素,所以:  如果您添加1,2,2,3,4,5,6,7,8,9(顺序无关紧要),您将拥有10个元素,每个元素都可以找到 1/10 = 10/100 = 10%概率(又称机会),但出现两次的元素2将有 20%在该方法中被选择的机会,更多数字出现的更多& #39;有机会选择增加,如你所说(数字显示的时间数)/(元素总数)(这是基本数学)