# How to Randomly Sample from a Python List?

In data science, you will need to learn how to generate random numbers, which in Python, we can do with the `random` module.

In this tutorial, you’ll learn how to solve the following programming challenge:

βοΈ Challenge: How to do random sampling from a list in Python?

Without further ado, let’s dive right into it!

## Method 1: Using Function random.choice()

Description from the help function:

`help(choice)`

Code snippet:

```from random import choice

seq = list(range(0,10))
print(new)

for i in range(5):
print(choice(seq))```

This function uses the random module to pick 5 numbers from the sequence in the list. Note that the numbers can repeat. If the list is empty, it will return `IndexError`

It can also work for strings:

For example:

Choose a random Beethoven symphony (by opus number) to listen to. This `random.choice()` command gives me one from the list β`sym_opus`β

Or from a list:

Here’s another example:

```import random

#Create the list of the 9 symphonies:
sym = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print('Select Symphony No. '+str(random.choice(sym)))```

Output:

```Select Symphony No. 9
```

π Recommended Tutorial: Sample a Random Number from a Probability Distribution in Python

## Method 2: Using Function random.choices()

If you need to choose a sample with replacement/duplicates

In the example below, we draw five cards (we set `k=5`) from a 52-card deck to determine the suits. Each card draw has equal probability of being drawn.

`choices(self, population, weights=None, *, cum_weights=None, k=1)`

Here’s a code example:

```import random

#Create list of suits

draw = random.choices(suits, k=5)
print(draw)```

Here we see that `Clubs` are drawn three times.

### Weighted Outcomes

What happens if there are different weights/probabilities to the outcome?

For example, in a roulette wheel, the outcomes are black, red, and green. But there are 18 spots for black and red, but only 2 for green. So, in the code we can weigh it accordingly.Β

```import random

roulette = ['Black', 'Red', 'Green']

spin = random.choices(roulette, weights=[18,18,2], k=1)
print(spin)```

### Bonus Example

Another example:

```import random
import pandas as pd

fulldeck = (list(range(1,11))+[10]*3)*4
#print(len(fulldeck))
base_name = ['A'] + list(range(2,11)) + ['J', 'Q', 'K']
cards = []
cards.extend(str(num) + " of "+ suit for num in base_name)

deck = pd.Series(fulldeck, index=cards)

#deck

def draw(deck, n=5):
return deck.sample(n)
draw(deck)```

Output:

```4 of Clubs       4
J of Clubs      10
10 of Clubs     10
dtype: int64```

## Method 3: Using Function random.sample()

Raffle Ticket Draw:Β

If the list itself has duplicate elements –  like when picking winners in a raffle (in the example below, the number 23, then it could be returned.

```import random
raffle = [23, 88, 41, 23, 7, 95, 101, 33, 67, 16, 23, 41, 23]

random.sample(raffle, k=5)```

What about picking unique draws – like cards from a deck?

We could name the cards from 1 to 52, and run the `sample()` function, to pick out 5 cards:

```import random

deck = list(range(1,53))

random.sample(deck, k=5)
```