# Shuffle a deck of cards

Given a deck of cards, the task is to shuffle them.

## 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 `

/div>

## 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. `

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
```

Note : Output will be different each time because of the random function used in the program.
Please refer Shuffle a given array for details.

Randomized