using System.Collections.Generic;
public static void Main()
public static void Test()
var wfuncs = new[] {GetSomeNumbers(r, 0.8, 1.0), GetSomeNumbers(r, 0.8, 1.2), GetSomeNumbers(r, 1.1, 1.3), GetSomeNumbers(r, 0.2, 1.3)}.ToList();
Console.WriteLine(String.Join(", ", Generator(wfuncs).Take(10)));
Console.WriteLine(String.Join(", ",
.Zip(wfuncs[1], (d, dnext) => d + dnext)
.Zip(wfuncs[2], (d, dnext) => d + dnext)
.Zip(wfuncs[3], (d, dnext) => d + dnext).Take(10)));
public static IEnumerable<double> GetSomeNumbers(Random r, double min, double max)
yield return r.NextDouble() * (max - min) + min;
public static IEnumerable<double> Generator(List<IEnumerable<double>> wfuncs)
return wfuncs.Aggregate((func, next) => func.Zip(next, (d, dnext) => d + dnext));