Exemple #1
0
        public static ObjectValuePair PickItemWeightedReturnPair(List <ObjectValuePair> pairs)
        {
            // Compute total value.
            double s = 0;

            foreach (ObjectValuePair p in pairs)
            {
                if (p.value < 0)
                {
                    throw new ArgumentOutOfRangeException("Weights must be nonnegative in PickItemWeightedReturnPair. weight = " + p.value.ToString());
                }
                s += p.value;
            }
            ObjectValuePair picked = new ObjectValuePair();

            double r       = Utilities.rand.NextDouble() * s;
            double current = 0;

            foreach (ObjectValuePair p in pairs)
            {
                current += p.value;
                if (r < current + 0.00000001)
                {
                    picked = p;
                    break;
                }
            }

            return(picked);
        }
Exemple #2
0
        public static ObjectValuePair PickLargestItemReturnPair(List <ObjectValuePair> pairs)
        {
            double          max    = double.NegativeInfinity;
            ObjectValuePair argMax = new ObjectValuePair();

            foreach (ObjectValuePair p in pairs)
            {
                if (p.value > max)
                {
                    max    = p.value;
                    argMax = p;
                }
            }
            return(argMax);
        }