Java:对 Random() 应用概率约束
Java: Applying probability constraints on Random()
我从来没有特别精通 Java 随机函数。
我正在使用
int myrandom = ThreadLocalRandom.current().nextInt(x, y+1)
其中 myrandom 的值将在变量 x 和 y 之间计算。
它本身的值并不完全相关,我可能会将其设置为 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>0 && Z<100, Z>100 && Z<200, Z>200 && Z<300...
...等等,我想改变约束说,Z>0 && Z<110, Z>110 Z<210.
如您所见,并且可能猜到,以这种方式处理数据非常痛苦,我确信一定有更好的方法来做到这一点,可能是使用模数。
主要问题是当我只想更改一个时,我必须修改/所有/的案例。当我必须将默认值恢复为一个而不是其他默认值时,事情变得相当复杂。
我的数学能力不是那么好,所以感谢任何帮助。
这是一种方法。
- 确定 bin 的大小以实现所需的分布。
- 确定所有bin的大小的总和,称其为
n
- 分配一个
int[] slots = new int[n];
- 预填充数组,使每个槽都包含 bin 编号
- 生成一个介于0和
n-1
之间的随机数,称为x
- 从
slots[x]
读取bin号
我从来没有特别精通 Java 随机函数。
我正在使用
int myrandom = ThreadLocalRandom.current().nextInt(x, y+1)
其中 myrandom 的值将在变量 x 和 y 之间计算。
它本身的值并不完全相关,我可能会将其设置为 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>0 && Z<100, Z>100 && Z<200, Z>200 && Z<300...
...等等,我想改变约束说,Z>0 && Z<110, Z>110 Z<210.
如您所见,并且可能猜到,以这种方式处理数据非常痛苦,我确信一定有更好的方法来做到这一点,可能是使用模数。
主要问题是当我只想更改一个时,我必须修改/所有/的案例。当我必须将默认值恢复为一个而不是其他默认值时,事情变得相当复杂。
我的数学能力不是那么好,所以感谢任何帮助。
这是一种方法。
- 确定 bin 的大小以实现所需的分布。
- 确定所有bin的大小的总和,称其为
n
- 分配一个
int[] slots = new int[n];
- 预填充数组,使每个槽都包含 bin 编号
- 生成一个介于0和
n-1
之间的随机数,称为x
- 从
slots[x]
读取bin号