Paul Nahin has written a wonderful collection of problems. All can be solved with a generator for pseudo-random numbers and some head scratching. Many probability problems are resistent to analytical solutions or even descriptions. However, the situations described by the problems can often be simulated with repeated use of psedu-random number generator. Nahin's explores solutions in depth and presents Matlab code for all the problems.
The code here is written in Python 3 using the built-in library random and also numpy and matplotlib for plotting.