public override int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint)
 {
     return 0;
 }
 public abstract int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint);
 public override int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint)
 {
     return random.Next(2000, 4000);
 }
 public override int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint)
 {
     //  Parameter   Values
     //  Mean        2000 ms
     //  Minimum     1000 ms
     //  Maximum     20000 ms
     //  Deviation   2.0 (95.4% are within 5000 ms from mean)
     return (int)(coefficient * Gaussian.Next(2000, 1000, 20000, 2000, 2.0));
 }
 private Vector ToDoubleInput(GameState gs, DoubleResponseHint hint)
 {
     return new Vector(hint.TakeEq, hint.PassEq, System.Math.Abs(hint.PassEq - hint.TakeEq));
 }
        // Where's the randomness? Possibilities:
        // Category the actions and pick one randomly from the cat's set of actions (or approximate by some probability distribution etc.)
        // Sort a list from best to worst distances and pick randomly from that list (top N candidates - uniform random or normal)
        public override int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint)
        {
            Vector v = ToDoubleInput(gamestate, hint);

            foreach (KeyValuePair<GameStateAction, Vector> gv in doubles)
            {
                gv.Value.Distance = Vector.ComputeDistance(gv.Value, v);
            }

            doubles.Sort(Compare);

            return (int)doubles[0].Key.Time;
        }
        public override int TimeOnDoubleOffer(GameState gamestate, DoubleResponseHint hint)
        {
            int total = 0;

            if (random.Next(10) == 0)
                total += random.Next(8000);

            if (random.Next(5) == 0)
                total += random.Next(4000);

            return random.Next(500, 1500);
        }