I write bots that play card games. From time to time, I add noise to their decisions, mainly for two reasons:
- Reduce predictability: In games with hidden information the optimal play is a mix between several actions.
- Reduce strength: allows to create several bots on a spectrum of strength.
My first question is: What are the best practices of adding noise to decisions?
I implement noise in two ways: assume each action receives a score $S$.
- Each action also receives $\text{noise} \sim \text{Uniform}(0, \text{constant})$. The action with the highest $S+\text{noise}$ is chosen.
- Each action is chosen with probability proportional to its $S$. I.e., $\text{Pr}(i)=\dfrac{S_i+W}{\Sigma_j (S_j)} $, where $W$ is a winner bias, that increases the probability of the best $X$ actions.
What are the pros and cons in the two implementations that I use?