# The random package

## Contents

# The `random`

package#

Import the package. No need to install the package first since it comes with the basic library.

```
import random
```

## Generating random numbers#

### normalvariate#

The following code will generate a random number (specifically a *float*) from a normal distribution with mean of 10.5 and a standard deviation of 2.8.

```
random_normal = random.normalvariate(10.5, 2.8)
random_normal
```

```
11.053198954189313
```

### uniform#

The following code will generate a random number (specifically a *float*) from a uniform distribution with a lower bound of -5.1 and an upper bound of 9.5.

```
random_uniform = random.uniform(-5.1, 9.5)
random_uniform
```

```
1.1131602840045804
```

### randint#

The following code will generate a random integer from the range \([-2, 12]\) — endpoints are included.

```
random_int = random.randint(-2, 12)
random_int
```

```
-1
```

## Random elements with lists#

### shuffle#

The following code will a shuffle a list in place. Notice, the function returns `None`

, so it cannot be used to create a new list. If you want to create a new list, see below.

```
person_list = ['Kyle', 'Stan', 'Kenny', 'Cartman']
random.shuffle(person_list)
person_list
```

```
['Kyle', 'Cartman', 'Kenny', 'Stan']
```

### random selections from lists#

#### choice#

The following code will select a single random grade from the list and store it in a new variable. `grade_list`

is unaffected.

```
grade_list = ['A', 'B', 'C', 'D', 'F']
random_grade = random.choice(grade_list)
print(grade_list)
print(random_grade)
```

```
['A', 'B', 'C', 'D', 'F']
B
```

#### choices#

The following code will select 3 grades from the grade list. Elements are selected **with replacement**, meaning it is possible that the same grade will be selected multiple times.

```
grade_list = ['A', 'B', 'C', 'D', 'F']
random_grades = random.choices(grade_list, k=6)
random_grades
```

```
['A', 'F', 'F', 'B', 'B', 'D']
```

You can also add a weights argument. For example, if you would like to make a list of 20 grades and choose “A” more often than “B”, “C”, and “D”, and never choose “F”, you could do the following. If weights are not specified, then elements are selected with equal probability.

```
grade_list = ['A', 'B', 'C', 'D', 'F']
random_grades = random.choices(
grade_list,
k=10,
weights=[5, 1, 1, 1, 0],
)
random_grades
```

```
['A', 'B', 'A', 'A', 'A', 'A', 'A', 'D', 'A', 'A']
```

#### sample#

If you would like to select elements from a list **without replacement**, you can do the following. Notice, you will get an error if you choose a `k`

value that is larger than the length of the list.

```
pet_options = ['dog', 'cat', 'turtle', 'lizard', 'child']
random_pets = random.sample(pet_options, k=2)
random_pets
```

```
['lizard', 'dog']
```