本文整理汇总了C#中SortedList.Aggregate方法的典型用法代码示例。如果您正苦于以下问题:C# SortedList.Aggregate方法的具体用法?C# SortedList.Aggregate怎么用?C# SortedList.Aggregate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SortedList
的用法示例。
在下文中一共展示了SortedList.Aggregate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Arbitrary
//Executes various different heightmap forming functions at random
public static Heightmap Arbitrary(SortedList<double, Action> functions, int iterations = 10000, Func<int, bool> StepCallback = null)
{
//Want to make sure that they're sorted in descending order and normalized.
double total = functions.Aggregate<KeyValuePair<double, Action>, double>(0, (current, next) => current + next.Key);
var actionsSorted = (from kvp in functions select new {Key = kvp.Key/total,
Value = kvp.Value}).OrderBy((x)=>x.Key);
List<int> actionsDone = new List<int>(functions.Count);
for (int i = 0; i < functions.Count; i++)
{
actionsDone.Add(0);
}
for (int i = 0; i < iterations; i++)
{
//try to "roll under" the key value; we perform the first action whose key + cumulative value is higher than this value.
double randomValue = rand.NextDouble();
double cumulativeValue = 0;
for(int j = 0; j < actionsSorted.Count(); j++)
{
var kvp = actionsSorted.ElementAt(j);
cumulativeValue += kvp.Key;
if (randomValue < cumulativeValue)
{
actionsDone[j]++;
kvp.Value();
break;
}
}
if (StepCallback != null)
{
bool Continue = StepCallback(i);
if (!Continue)
break;
}
}
return Map;
}