anchor.diff:                  , winmod     :: egWinId()       % win function module
                   , players    :: integer()       % number of players 
                   , status     :: egBotStatus()   % current bot status (e.g. learning / playing)
  -                , explore=0.1 :: float()         % rate for exploration (0..1.0)
  -                , flatten=0  :: float()         % flat peak randomisation
  -                , lrate=0.5  :: float()         % learning rate
  -                , discount=0.95  :: float()      % Q-discount per move
  +                , explore=1  :: number()        % rate for exploration (0..1)
  +                , flatten=0  :: number()        % flat peak randomisation
  +                , lrate=2    :: number()        % learning rate
  +                , discount=1 :: number()        % Q-discount per move
                   , table      :: atom()          % table name for Q-A-aggregation
                   }).
   
  
positive.code:         [#egTicTacQlSample{nos=Nos, aaq=Aaq}] ->    {Nos,Aaq}
      end,
      % ?Info("play_bot_impl ActionQuality ~p",[ActionQuality]),    
      NormIdx = pick(NOS, AccActionQuality, 1.0, Explore, Flatten),      % 0-based index for predicted move
      NewIdx = egambo_tictac_sym:unmap_move(Width, Height, NormIdx, Sym),    
      % ?Info("play_bot_impl NormIdx, NewIdx (output picked) ~p ~p", [NormIdx, NewIdx]),
      {ok, Idx, NewBoard} = egambo_tictac:put(Gravity, Board, Width, NewIdx, hd(NAliases)),
  
negative.code:     element(2, lists:last(lists:sort(AL))).
  
  ucb1_target(0, _, _, _) -> -100; 
  ucb1_target({0, 0}, _, _, _) -> 100; 
  ucb1_target({N, Q}, NOS, _Prior, Explore) -> 
      Q/N + ?UCB1_BONUS(NOS, N, _Prior, Explore).
  
  % ucb1_target({N,Q}, NOS, Prior, Explore) -> 
  