我正在努力寻找处理以下问题的最佳方法:
我真的很难以最有效的方式来执行此操作。我真的想减少循环数据的次数。有一种明显的方法我只是在掩饰吗?
对于可能的前进道路的任何建议将不胜感激。
new #1 = #1
new #2 = #2 * (1 - #1)
new #3 = #3 * (1 - #1) * (1 - #2)
new #4 = #4 * (1 - #1) * (1 - #2) * (1 - #3)
答案 0 :(得分:5)
就地替换:
List<decimal> data =....
decimal multiplier = 1.0;
for (var i = 0; i < data.Count; i++)
{
var oldMultipleir = multiplier;
multiplier *= (1 - data[i]);
data[i] *= oldMultiplier;
}