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