# JS — Shuffle Cards (Or Any Elements) With the Fisher-Yates Shuffle Algorithm

--

In this Quick Tip, I will show you how to implement the Fisher-Yates shuffle algorithm. Once we have learned how it works, we will use it to shuffle a virtual deck of cards.

*Note:** Although this tutorial is written using JavaScript, you should be able to use the same techniques and concepts in almost any game development environment.*

# In this Quick Tip, I will show you how to implement the Fisher-Yates shuffle algorithm. Once we have learned how it works, we will use it to shuffle a virtual deck of cards.

*Note:** Although this tutorial is written using JavaScript, you should be able to use the same techniques and concepts in almost any game development environment.*

# 1. Introduction to the Algorithm

There are several ways to shuffle a set of elements, as demonstrated in this post. While those are all valid options, the one method I have always used is the one implemented by the Fisher-Yates Shuffle Algorithm.

I like this method because it does an “in place” shuffle without the need to create a new array (or whatever data structure you happen to be using).

# 2. Using the Algorithm

If you gave the Wikipedia page a quick read through, you’ll have seen it mentions a couple of different methods of implementing the algorithm. The one we will be using is called the “Modern Method”:

`To shuffle an array a of n elements (indices 0...n-1):`

for i from (n − 1) down to 1 do

set j to a random integer with 0 ≤ j ≤ i

exchange a[j] and a[i]

- You start with the last element in the list (the top card in the deck, if you like).
- You pick another element at random between the first one and your selected one.
- You swap these two elements.
- You pick the last-but-one element in the list (the second card in the deck), and repeat #1-#3 until you reach the bottom of the deck.