Open in App
Not now

# Shuffle a deck of cards

• Difficulty Level : Easy
• Last Updated : 12 Mar, 2023

Given a deck of cards, the task is to shuffle them. Asked in Amazon Interview

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Prerequisite : Shuffle a given array Algorithm:

```1. First, fill the array with the values in order.
2. Go through the array and exchange each element
with the randomly chosen element in the range
from itself to the end.

// It is possible that an element will be swap
// with itself, but there is no problem with that. ```

## C++

 `// C++ program for shuffling desk of cards.` `#include ` `using` `namespace` `std;`   `// Function which shuffle and print the array` `void` `shuffle(``int` `card[], ``int` `n)` `{` `    ``// Initialize seed randomly` `    ``srand``(``time``(0));`   `    ``for` `(``int` `i=0; i

## Java

 `// Java Code for Shuffle a deck of cards` `import` `java.util.Random;`   `class` `GFG {` `    `  `    ``// Function which shuffle and print the array` `    ``public` `static` `void` `shuffle(``int` `card[], ``int` `n)` `    ``{` `        `  `        ``Random rand = ``new` `Random();` `        `  `        ``for` `(``int` `i = ``0``; i < n; i++)` `        ``{` `            ``// Random for remaining positions.` `            ``int` `r = i + rand.nextInt(``52` `- i);` `            `  `             ``//swapping the elements` `             ``int` `temp = card[r];` `             ``card[r] = card[i];` `             ``card[i] = temp;` `             `  `        ``}` `    ``}` `     `  `    ``// Driver code` `    ``public` `static` `void` `main(String[] args) ` `    ``{` `        ``// Array from 0 to 51` `        ``int` `a[] = {``0``, ``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``,` `                   ``9``, ``10``, ``11``, ``12``, ``13``, ``14``, ``15``,` `                   ``16``, ``17``, ``18``, ``19``, ``20``, ``21``, ``22``,` `                   ``23``, ``24``, ``25``, ``26``, ``27``, ``28``, ``29``,` `                   ``30``, ``31``, ``32``, ``33``, ``34``, ``35``, ``36``,` `                   ``37``, ``38``, ``39``, ``40``, ``41``, ``42``, ``43``,` `                   ``44``, ``45``, ``46``, ``47``, ``48``, ``49``, ``50``, ` `                   ``51``};` `     `  `        ``shuffle(a, ``52``);` `     `  `        ``// Printing all shuffled elements of cards` `        ``for` `(``int` `i = ``0``; i < ``52``; i ++)` `           ``System.out.print(a[i]+``" "``);` `        `  `    ``}` `}` `// This code is contributed by Arnav Kr. Mandal`

## Python3

 `# Python3 program for shuffling desk of cards` `# Function which shuffle and print the array `   `import` `random` `def` `shuffle(card,n) :` `    `  `    ``# Initialize seed randomly` `    ``for` `i ``in` `range``(n):` `        `  `        ``# Random for remaining positions.` `        ``r ``=` `i ``+` `(random.randint(``0``,``55``) ``%` `(``52` `-``i))` `        ``tmp``=``card[i]` `        ``card[i]``=``card[r]` `        ``card[r]``=``tmp` `#Driver code` `if` `__name__``=``=``'__main__'``:` `    ``a``=``[``0``, ``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``,` `       ``9``, ``10``, ``11``, ``12``, ``13``, ``14``, ``15``,` `       ``16``, ``17``, ``18``, ``19``, ``20``, ``21``, ``22``, ` `       ``23``, ``24``, ``25``, ``26``, ``27``, ``28``, ``29``,` `       ``30``, ``31``, ``32``, ``33``, ``34``, ``35``, ``36``,` `       ``37``, ``38``, ``39``, ``40``, ``41``, ``42``, ``43``, ` `       ``44``, ``45``, ``46``, ``47``, ``48``, ``49``, ``50``,` `       ``51``]` `    ``shuffle(a,``52``)` `    ``print``(a)` `       `  `#this code is contributed by sahilshelangia`

## C#

 `// C# Code for Shuffle a deck of cards` `using` `System;`   `class` `GFG {` `    `  `    ``// Function which shuffle and ` `    ``// print the array` `    ``public` `static` `void` `shuffle(``int` `[]card, ` `                               ``int` `n)` `    ``{` `        `  `        ``Random rand = ``new` `Random();` `        `  `        ``for` `(``int` `i = 0; i < n; i++)` `        ``{` `            `  `            ``// Random for remaining positions.` `            ``int` `r = i + rand.Next(52 - i);` `            `  `            ``//swapping the elements` `            ``int` `temp = card[r];` `            ``card[r] = card[i];` `            ``card[i] = temp;` `            `  `        ``}` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `Main() ` `    ``{` `        ``// Array from 0 to 51` `        ``int` `[]a = {0, 1, 2, 3, 4, 5, 6, 7, 8,` `                   ``9, 10, 11, 12, 13, 14, 15,` `                   ``16, 17, 18, 19, 20, 21, 22,` `                   ``23, 24, 25, 26, 27, 28, 29,` `                   ``30, 31, 32, 33, 34, 35, 36,` `                   ``37, 38, 39, 40, 41, 42, 43,` `                   ``44, 45, 46, 47, 48, 49, 50, ` `                   ``51};` `    `  `        ``shuffle(a, 52);` `    `  `        ``// Printing all shuffled elements of cards` `        ``for` `(``int` `i = 0; i < 52; i ++)` `        ``Console.Write(a[i]+``" "``);` `        `  `    ``}` `}`   `// This code is contributed by Nitin Mittal.`

## Javascript

 `// JavaScript Implementation of the above approach`   `// Function which shuffle and print the array ` `function` `shuffle(card, n) {` `  ``// Initialize seed randomly` `  ``for` `(let i = 0; i < n; i++) {` `    ``// Random for remaining positions.` `    ``let r = i + (Math.floor(Math.random() * (52 - i)));` `    ``let tmp = card[i];` `    ``card[i] = card[r];` `    ``card[r] = tmp;` `  ``}` `}`   `// Driver code` `  ``let a = [` `    ``0,` `    ``1,` `    ``2,` `    ``3,` `    ``4,` `    ``5,` `    ``6,` `    ``7,` `    ``8,` `    ``9,` `    ``10,` `    ``11,` `    ``12,` `    ``13,` `    ``14,` `    ``15,` `    ``16,` `    ``17,` `    ``18,` `    ``19,` `    ``20,` `    ``21,` `    ``22,` `    ``23,` `    ``24,` `    ``25,` `    ``26,` `    ``27,` `    ``28,` `    ``29,` `    ``30,` `    ``31,` `    ``32,` `    ``33,` `    ``34,` `    ``35,` `    ``36,` `    ``37,` `    ``38,` `    ``39,` `    ``40,` `    ``41,` `    ``42,` `    ``43,` `    ``44,` `    ``45,` `    ``46,` `    ``47,` `    ``48,` `    ``49,` `    ``50,` `    ``51,` `  ``];` `  ``shuffle(a, 52);` `  ``console.log(a);`

Output:

```29 27 20 23 26 21 35 51 15 18 46 32 33 19
24 30 3 45 40 34 16 11 36 50 17 10 7 5 4
39 6 47 38 28 13 44 49 1 8 42 43 48 0 12
37 41 25 2 31 14 22```

Time Complexity: O(n)

Space Complexity: O(1)