https://www.robweir.com/blog/2010/02/microsoft-random-browse...
The Fisher–Yates shuffle is the right way to shuffle an array in an unbiased way.
https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle