Java:对Random()应用概率约束

时间:2016-03-02 07:05:38

标签: java random constraints artificial-intelligence probability

我从未如此精通Java随机函数。

我正在使用

int myrandom = ThreadLocalRandom.current().nextInt(x, y+1)

在变量x和y之间计算myrandom的值。

它的自身价值并不完全相关,我可能只是将其设置为0和1000,然后运行算法来解释该值。

        for(int i = 0; i < 4; i++){

            if( randmods[i].gtr_less(choice) ){
                choice = i;
                break;

            }else{
                continue;

            }
        }

功能简单:

public boolean gtr_less(int value){

    if(value > mod_min && value < mod_max){
        return true;

    }else{

        return false;
    }

}

基本方法是使用if(rand > x && rand < y)

评估所有可能性

问题是,我想约束我在0-1000范围内的每个范围上的修饰符。

所以,如果是10个案件,他们是:

Z&gt; 0&amp;&amp; Z&lt; 100,Z&gt; 100&amp;&amp; Z <200,Z> 200&amp;&amp; z,其中; 300 ...

...依此类推,我想改变约束来说,Z&gt; 0&amp;&amp; Z&lt; 110,Z&gt; 110 Z&lt; 210。

正如您所看到的,并且可能猜测,以这种方式操纵数据是一个巨大的痛苦,我确信必须有更好的方法来做到这一点,可能使用模数。

主要问题是当我只想更改一个时,我必须修改/所有/的情况。当我必须将默认值恢复为一个而不是其他默认值时,事情变得相当复杂。

我的数学技能并不那么尖锐,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

这是实现目标的一种方式。

  1. 确定箱的大小以达到所需的分布。
  2. 确定所有垃圾箱大小的总和,称之为n
  3. 分配int[] slots = new int[n];
  4. 预填充阵列,使每个插槽包含箱号
  5. 生成0到n-1之间的随机数,包括x
  6. slots[x]
  7. 中读取文件夹编号