我从未如此精通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。
正如您所看到的,并且可能猜测,以这种方式操纵数据是一个巨大的痛苦,我确信必须有更好的方法来做到这一点,可能使用模数。
主要问题是当我只想更改一个时,我必须修改/所有/的情况。当我必须将默认值恢复为一个而不是其他默认值时,事情变得相当复杂。
我的数学技能并不那么尖锐,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
这是实现目标的一种方式。
n
int[] slots = new int[n];
n-1
之间的随机数,包括x
slots[x]