高效的计算方法

时间:2013-11-20 05:40:53

标签: c#

我正在努力寻找处理以下问题的最佳方法:

  1. 我有一个小数列表
  2. 列表不固定....意思是我可以有2次,另外9次
  3. 我想使用下面的算法构建一个新的小数列表
  4. 我真的很难以最有效的方式来执行此操作。我真的想减少循环数据的次数。有一种明显的方法我只是在掩饰吗?

    对于可能的前进道路的任何建议将不胜感激。


      new #1 = #1
      new #2 = #2 * (1 - #1)
      new #3 = #3 * (1 - #1) * (1 - #2) 
      new #4 = #4 * (1 - #1) * (1 - #2) * (1 - #3)
    

1 个答案:

答案 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;
}