Need to shuffle a virtual deck of cards? Learn how with this project! The algorithm explained here, called the Fisher-Yates algorithm, can be implemented in-place (meaning it doesn't require any additional temporary lists) and each final outcome has an equal probability.