Get this book -> Problems on Array: For Interviews and Competitive Programming

In this article at OpenGenus, we will examine 8 different ways to get random numbers in Python.

Table of Contents:

- Introduction
- The random Module
- Generating Random Numbers within a Range
- Generating Random Floats
- Generating Random Integers
- Random Sampling from a List
- Random Selection from a String
- Random Shuffling
- Cryptographically Secure Random Numbers
- Conclusion

## Introduction

Numerous computer applications, including games, simulations, and encryption, depend heavily on random numbers. Python, a powerful programming language, offers a number of fast ways to produce random integers. In this article at OpenGenus, we will examine various methods for obtaining random numbers in Python and discover practical applications for them.

The 8 different ways to get a random number in Python are:

- The random Module
- Generating Random Numbers within a Range
- Generating Random Floats
- Generating Random Integers
- Random Sampling from a List
- Random Selection from a String
- Random Shuffling
- Cryptographically Secure Random Numbers

## The random Module

A variety of functions are available in the built-in `random`

module of Python to produce random numbers. We must import the module first before we can utilize these functions:

```
import random
```

## Generating Random Numbers within a Range

We often need random numbers that fall inside a certain range. The `randrange(start, stop, step)`

function is offered for this purpose by the `random`

module. Between `start`

(inclusive) and `stop`

(exclusive), it creates a random number, incrementing by `step`

:

```
import random
random_number = random.randrange(1, 100, 2)
print(random_number)
```

Sample output

```
59
```

The code above produces an odd number at random between 1 and 99.

## Generating Random Floats

Using the `random()`

function of the `random`

module, we can get random floating-point values between 0 and 1:

```
import random
random_float = random.random()
print(random_float)
```

This code snippet generates a random float value between 0 and 1.

```
0.8765219845692345
```

## Generating Random Integers

The `randint(a, b)`

function in the `random`

module also produces random numbers between `a`

and `b`

(inclusive):

```
import random
random_integer = random.randint(1, 10)
print(random_integer)
```

The code above generates a random integer between 1 and 10.

```
7
```

## Random Sampling from a List

We might occasionally need to choose random items from a list. The `sample(sequence, k)`

function is provided for this by the `random`

module. It extracts `k`

distinct random items at random from the supplied `sequence`

:

```
import random
my_list = [1, 2, 3, 4, 5]
random_selection = random.sample(my_list, 3)
print(random_selection)
```

The output will be three random elements from the list.

```
[3, 2, 5]
```

## Random Selection from a String

The `choice(sequence)`

function from the `random`

module may be used to choose a random character from a string as well:

```
import random
my_string = "Hello, World!"
random_character = random.choice(my_string)
print(random_character)
```

Executing the above code will print a random character from the string.

```
r
```

## Random Shuffling

The `shuffle(sequence)`

method in Python's `random`

module enables us to shuffle a list at random:

```
import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)
```

Running the code above will shuffle the elements of the list randomly.

```
[3, 2, 5, 1, 4]
```

## Cryptographically Secure Random Numbers

Use of cryptographically safe random numbers is crucial when working with security-sensitive applications. The following features are offered by the Python 3.6-added `secrets`

module:

```
import secrets
secure_random_number = secrets.randbelow(100)
print(secure_random_number)
```

The `randbelow(n)`

function creates a random number between 0 and `n`

(exclusively) that is cryptographically safe.

```
73
```

## Conclusion

Random number generation is a common necessity in many programming activities. The `random`

module in Python provides a wide range of methods to effectively create random integers. The `secrete`

module was used to create random numbers that were cryptographically secure, as well as random floats and integers, samples from lists and strings, random shuffles of sequences, and random floats and integers within predetermined ranges. Utilizing these methods, programmers may add randomization to their apps, giving them more variety and unpredictability.