# What are the best practices of adding noise to game-playing bots?

I write bots that play card games. From time to time, I add noise to their decisions, mainly for two reasons:

1. Reduce predictability: In games with hidden information the optimal play is a mix between several actions.
2. 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$$.

1. Each action also receives $$\text{noise} \sim \text{Uniform}(0, \text{constant})$$. The action with the highest $$S+\text{noise}$$ is chosen.
2. 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?