Ejemplo n.º 1
0
        public static IDiscreteDistribution <T> ToWeighted <T>([NotNull] this IEnumerable <T> items,
                                                               [NotNull] IEnumerable <int> weights)
        {
            var list = items.ToList();

            return(WeightedInteger.Distribution(weights)
                   .Select(i => list[i]));
        }
Ejemplo n.º 2
0
        public static IDiscreteDistribution <TR> Select <TA, TR>([NotNull] this IDiscreteDistribution <TA> d,
                                                                 [NotNull] Func <TA, TR> projection)
        {
            var dict = d.Support()
                       .GroupBy(projection, d.Weight)
                       .ToDictionary(g => g.Key, g => g.Sum());
            var rs = dict.Keys.ToList();

            return(Projected <int, TR> .Distribution(
                       WeightedInteger.Distribution(
                           rs.Select(r => dict[r])),
                       i => rs[i]));
        }