选择项目可能

时间:2018-09-23 17:51:40

标签: java

我目前正在尝试用java创建一个可能基于选择的系统,但是它似乎不能很好地工作,我当前的代码如下:

private ArrayList<SelectableObjekt> obs;
obs = new ArrayList<>();
obs.add(new SelectableObjekt("hello, with 3% probably", 30)); //Will be devied in the SelectableObjekt class by 10 so 30 will become 3% and 700 will become 70%
obs.add(new SelectableObjekt("hello, with 70% probably", 700));
obs.add(new SelectableObjekt("hello, with 90% probably", 900));
obs.sort(new Comparator<SelectableObjekt>() {
        @Override
        public int compare(SelectableObjekt o1, SelectableObjekt o2) {

            return Double.compare(o1.getChance(), o2.getChance());
        }
    });

并选择对象:

private SelectableObjekt selectRandom() {
    double perc = ((int)ThreadLocalRandom.current().nextInt(1001))/10D;
    for (int i = 0; i < obs.size(); i++) {
        SelectableObjekt obj = obs.get(i);
        if(obj.getChance() > perc) {
            return obj;
        }
    }
    return obs.get(chestDrops.size()-1);
}

总而言之,SelectableObjekt包含一个内部可能为0.1-100的机会int。 100表示​​100%,所以32.3表示32.3%,但是选择不能正常工作,我得到的频率比90%的高出70%,我无法理解为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

编写代码的方式并不罕见。您有三个范围。

0 - 3% - the first option
3 - 70% - the second option.
70 - 90% - the third option.
90 - 100% - also the third option.

这意味着“ 70%”选项应该是〜67%的时间,而“ 90%”选项是〜30%的时间。