Exemplo n.º 1
0
        public ProbabilityObjectCollection(IEnumerable <IProbabilityObject> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            ProbabilityCollection = new ProbabilityCollection <T>(
                items.Select(i => new KeyValuePair <T, decimal?>((T)i, i?.Probability)));
        }
Exemplo n.º 2
0
        public ProbabilityObjectCollection(ProbabilityObjectWrapper <T>[] items)
        {
            if (items == null)
            {
                throw new ArgumentNullException(nameof(items));
            }

            ProbabilityCollection = new ProbabilityCollection <T>(
                items.Select(i => new KeyValuePair <T, decimal?>(i.Value, i.Probability)));
        }
Exemplo n.º 3
0
        // just wrapper for WeightedRandom method with ProbabilityCollection
        public static T ProbabilityRandom <T>(this Randomizer randomizer, ProbabilityCollection <T> probabilities)
        {
            // need null checks??

            if (!probabilities.HasDefinedProbabilities)
            {
                return(randomizer.ListItem(probabilities.AsList.ToList()));
            }

            var itemsWithProbs = probabilities.GetItemsWithProbabilities(true).ToArray();
            var items          = itemsWithProbs.Select(i => i.Key).ToArray();
            var weights        = itemsWithProbs.Select(i => (float)i.Value).ToArray();

            return(randomizer.WeightedRandom(items, weights));
        }
Exemplo n.º 4
0
 public static T ProbabilityRandomIfAny <T>(this Randomizer randomizer, ProbabilityCollection <T> probabilities)
 {
     if (probabilities.IsNullOrEmpty())
     {
         return(default);