method private get_best_action () = 
         let action_table = List.assoc current_state q_table in
         let best = ref action_table.(0) and
               winners = ref [0] in
         for i = 1 to num_actions-1 do
            if (action_table.(i) -. !best) > epsilon then
            (
               best := action_table.(i);
               winners := [i]
            )
            else
            (
               if abs_float (action_table.(i) -. !best) <= epsilon then
               (
                  winners := i :: !winners
               )
               else
               ()
            )
         done;
         let num_winners = List.length !winners in
         let index = Random.int num_winners in
         List.nth !winners index