Table of Contents

## Problem Formulation and Solution Overview

In this article, you’ll learn how to create a sequence of numbers in Python.

**Lux Lottery** has decided to create a new Quick-Pick game called **Lux-150**. This game is based on seven (7) random numbers between 1 and 150 for a monthly payout of $150,000. The purchaser will not select these numbers individually but be automatically generated.

*Your task as a Python Coder is to write a script that, when run, generates a new Lux-150 ticket sorted in ascending order and output to the terminal window. *

💬 **Question**: How would we write the Python code to generate a list of numbers and accomplish this task?

We can accomplish this task by one of the following options:

- Method 1: Use List Comprehension with
`random.randrange()`

. - Method 2: Use For Loop with
`random.randint()`

. - Method 3: Use
`sample()`

. - Method 4: Use NumPy with
`random.randint`

. - Method 5: Use
`random.SystemRandom()`

.

## Preparation

- The
*Pandas*library enables access to/from a*DataFrame*. - The
*NumPy*library supports multi-dimensional arrays and matrices in addition to a collection of mathematical functions.

To install these libraries, navigate to an IDE terminal. At the command prompt (`$`

), execute the code below. For the terminal used in this example, the command prompt is a dollar sign (`$`

). Your terminal prompt may be different.

$ pip install pandas

Hit the `<Enter>`

key on the keyboard to start the installation process.

$ pip install numpy

Hit the `<Enter>`

key on the keyboard to start the installation process.

If the installations were successful, a message displays in the terminal indicating the same.

Feel free to view the PyCharm installation guide for the required libraries.

Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.

import pandas as pd import numpy as np import random

## Method 1: Use List Comprehension

Using List Comprehension is an excellent, efficient way to generate random numbers.

lotto_nums = [random.randrange(1, 151) for num in range(7)] lotto_nums = sorted(lotto_nums) print(lotto_nums)

List Comprehension generates seven (7) random Lottery numbers between 1 (start) and 151 (stop-1). The result saves to `lotto_nums`

.

All in one line!

The `sorted()`

function is called and passed as a parameter to present the new **Lux-150** Lottery numbers in ascending order. Finally, the new **Lux-150** ticket is output to the terminal window.

**Output**

`[20, 25, 44, 51, 88, 117, 126]` |

## Method 2: Use For Loop

Another way to perform this task is with a For Loop. Not as efficient as List Comprehension, but it still does the trick!

lotto_nums = [] for i in range(1, 8): lotto_nums.append(random.randint(1, 151)) lotto_nums.sort() print(lotto_nums)

In this code, we declare an empty List, `lotto_nums`

.

A For Loop is instantiated with the parameters: 1 (start) and 8 (stop-1).

Inside this loop, we use `random.randint()`

and pass the parameters: 1 (`start`

) and 151 (`stop-1`

) to generate the random Lottery numbers. These numbers append and save to `lotto_nums`

.

The `sort()`

function is called to present the new **Lux-150** Lottery numbers in ascending order. Finally, the new **Lux-150** ticket is output to the terminal window.

**Output**

`[11, 12, 19, 20, 59, 85, 107]` |

## Method 3: Use random.sample()

An alternative approach is to use the `random.sample()`

function, which is called from the `random`

library.

lotto_nums = random.sample(range(1, 151), 7) lotto_nums.sort() print(lotto_nums)

Using the `random.sample()`

function, we pass the parameters: 1 (start), 151 (stop-1), and 7 (size-inclusive). This generates seven (7) random Lottery numbers and saves to `lotto_nums`

.

The `sort()`

function is called to present the new **Lux-150** Lottery numbers in ascending order.

Finally, the new **Lux-150** ticket is output to the terminal window.

**Output**

`[18, 23, 73, 82, 89, 96, 123]` |

## Method 4: Use NumPy random.randint()

In this code, we use the NumPy library, `np.random.randint()`

function.

lotto_nums = list(np.random.randint(low=1,high=151,size=7)) lotto_nums.sort() print(lotto_nums)

In this code, we pass the `np.random.randint()`

function three (3) parameters: `low=1`

(start), `high=151`

(stop-1) and `size=7`

(inclusive). This generates seven (7) random Lottery numbers and saves to `lotto_nums`

.

The `sort()`

function is called to present the new **Lux-150** Lottery numbers in ascending order. Finally, the new **Lux-150** ticket is output to the terminal window.

**Output**

`[47, 62, 80, 80, 103, 112, 135]` |

## Method 5: Use random.SystemRandom()

Use `random.SystemRandom()`

if you would like to generate seven (7) *Cryptographically Secure* random Lottery numbers.

lotto_nums = [] rand_nums = random.SystemRandom() for num in range(0,7): num = rand_nums.randint(1,151) lotto_nums.append(num) lotto_nums.sort() print(lotto_nums)

This code defines an empty list, `lotto_nums`

, and seeds `rand_nums`

.

A For Loop is instantiated and passed the parameters: 0 (start) and 7 (stop-1).

This loop generates seven (7) random Lottery numbers using `rand_nums.randint()`

and passing the parameters: 1 (start) and 15 (stop). These numbers append and save to `lotto_nums`

.

The `sort()`

function is called to present the new **Lux-150** Lottery numbers in ascending order. Finally, the new **Lux-150** ticket is output to the terminal window.

**Output**

`[19, 27, 46, 65, 73, 112, 126]` |

## Summary

These five (5) methods of generating random numbers should give you enough information to select the best one for your coding requirements.

Good Luck & Happy Coding!

At university, I found my love of writing and coding. Both of which I was able to use in my career.

During the past 15 years, I have held a number of positions such as:

In-house Corporate Technical Writer for various software programs such as Navision and Microsoft CRM

Corporate Trainer (staff of 30+)

Programming Instructor

Implementation Specialist for Navision and Microsoft CRM

Senior PHP Coder