【发布时间】:2014-07-10 17:43:39
【问题描述】:
我有这种程序结构用于随机选择程序执行。 然而,这种风格不可扩展、不可维护且非常容易出错。如您所见,if 语句的条件越来越长且不可读
你能推荐一种更好的编程风格/结构吗?
double aProb = 0.4;
double bProb = 0.2;
double cProb = 0.2;
double dProb = 0.2;
double chance = random.nextDouble();
if ( chance < aProb ) {
a();
}
if ( chance < bProb + aProb ) {
b();
}
if ( chance < cProb + bProb + aProb ) {
c();
}
if ( chance < dProb + cProb + bProb + aProb ) {
d();
}
【问题讨论】:
-
怎么样....数组!而且,如果你想过火,可能会加上前缀总和(可能是 fenwick 树)。
-
一个小代码示例?
-
通过逐步遍历概率数组来累积值。
currentProb += probs[i]。我没有更好的方法来附加函数,因为函数指针在 java 中并不存在。
标签: java design-patterns coding-style probability