Beispiel #1
0
        static void Main(string[] args)
        {
            List<EnvelopePair> envelopePairs = new List<EnvelopePair>();

            IRandomProvider randomProvider = new StandardRandomProvider();
            IPicker picker = new CoverStrategyPicker(); // change picker here

            // maximum envelope pairs

            int maxEnvelopePairs = 1000000;

            // fill envelopes with random values

            for (int i = 0; i < maxEnvelopePairs; i++)
            {
                EnvelopePair envelopePair = new EnvelopePair();
                envelopePair.Init(randomProvider);
                envelopePairs.Add(envelopePair);
            }

            // our balance is 0 at the moment

            int money = 0;

            // lets pick envelopes

            for (int i = 0; i < envelopePairs.Count; i++)
            {
                EnvelopePair currentEnvelopePair = envelopePairs[i];
                money += picker.Pick(randomProvider, currentEnvelopePair);
            }

            Console.WriteLine("Your balance is: " + money);
        }
        public int Pick(IRandomProvider randomProvider, EnvelopePair envelopePair)
        {
            int amount = 0;
            int randomValue = randomProvider.Next(1, max);

            /*
             * То есть чем меньше сумма в конверте А, тем с большей вероятностью следует сменить конверт и наоборот,
             * несколько большая сумма в А говорит о том, что скорее следует оставить первый конверт себе.
             */

            if (envelopePair.FirstEnvelope.Amount <= randomValue)
            {
                amount = envelopePair.SecondEnvelope.Amount;
            }
            else
            {
                amount = envelopePair.FirstEnvelope.Amount;
            }

            if (amount > max)
                max = amount;

            return amount;
        }
 public int Pick(IRandomProvider randomProvider, EnvelopePair envelopePair)
 {
     return envelopePair.SecondEnvelope.Amount;
 }