Generate Random Data using Python

Published January 02, 2024

If you like to create random data for a dataset or are getting into artificial intelligence / machine learning or AI/ML, this article can be a starting point. At some point, you may want to generate your own dataset from random data, or just generate a lot of random data for learning.

Generate random data with Python

What is Randomness?

In this blog post, we will create random data. Randomness is found in everywhere, especially in machine learning. Cryptography is another area that uses randomness, in relation to ciphertext. Other areas using randomness are computer simulation, randomized design, slot machines and statistical sampling. A random process is a deterministic or indeterministic process for which what we do not know is greater than what we know. This delves into the Heisenberg's Uncertainty Principle, which is a fundamental concept in quantum physics.

Random Number Generators

Random number generation is a process by which a random number generator (RNG) a sequence of numbers or characters that cannot be predicted is generated. We will look into Python's built-in random module, which implements pseudo-random number generators (as opposed to truly random RNGs). Internally, the system time is used for randomness. This can be changed.

How to generate random numbers (integers)

To generate a random integer from a sequential list of numbers, we can use random.randint().

If we want to generate a random integer between and including 3 and 10, we call randint().

random.randint(3,10) translates to picking a random integer from this list of integers:

3, 4, 5, 6, 7, 8, 9, 10

import random

num = random.randint(3, 10)
print(num)

OUTPUT:

7

Your output can vary, because it is.. well, random.


To generate a random number from a range of integers, we use random.randrange(). If we want to generate a random integer in this range

range(1, 100, 7), which evaluates to this array of integers:

[1, 8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99]

This is how we call random.randrange():

import random

num = random.randrange(1, 100, 7)
print(num)

OUTPUT:

64

It picked 64, which is in the whitelisted array of ints.

How to randomly pick a list of integers

Suppose we want to pick a list of 15 random numbers from 1 through 100. We can combine it with list comprehension.

import random

nums = [random.randint(1,100) for _ in range(15)]
print(nums)

OUTPUT:

[23, 62, 75, 56, 33, 29, 81, 55, 23, 45, 23, 6, 61, 86, 41]

How to randomly shuffle the list of integers

Let us randomly rearrange or shuffle the list of integers nums. For that, we will use random.shuffle().

random.shuffle(nums)
print(nums)

The shuffle() method does not return anything. It shuffles all the items in nums in-place. So, when you print the value of nums, you get a new order of the existing items.

OUTPUT:

[64, 6, 23, 7, 31, 33, 58, 96, 59, 93, 21, 45, 94, 84, 3]

How to generate random floats

To generate a random float from a sequential list of numbers, we can use random.uniform(). This is very similar to random.randint().

If we want to generate a random float between and including 3 and 10, we call random.uniform(3,10):

import random

num = random.uniform(3, 10)
print(num)

OUTPUT:

3.3796273150953624

Your output can vary.

How to generate random floating point numbers

A floating point number is a number from 0.0 through 1.0. To generate a floating point number, we can use random.random().

Let us generate and print 10 floating point numbers:

for _ in range(10):
    print(random.random())

OUTPUT:

0.16632288767537307
0.08202768857292786
0.08440485875689951
0.8394101116811752
0.6308685727717279
0.8518261525901913
0.3730988062970587
0.9057751046018332
0.5844411212476546
0.5590689948576777

Shuffling a list of strings

Let us shuffle a list of strings. We will use the list fruits which contains ['apples', 'banana', 'oranges', 'pears']

fruits = ['apples', 'banana', 'oranges', 'pears']
print(fruits)
random.shuffle(fruits)
print(fruits)

OUTPUT:

['apples', 'banana', 'oranges', 'pears']
['pears', 'oranges', 'banana', 'apples']

How to generate random strings

To generate random strings from a list of characters, we will use random.sample(). This takes two parameters - the first is a string with all permissible characters, and the second is the length of the resultant list. We will combine all items in the list using join().

Let us create a 5-character password that consists of a combination of the following letters and numbers:

a, b, c, d, e, f, 4, 5, 6, 7, 8

password = ''.join(random.sample('abcdef45678', 5))
print(password)

OUTPUT:

e7648

string module ascii_letters and digits

If you want to use all the letters of the alphabet, lowercase and uppercase, you can import string and use string.ascii_letters and string.digits.

string.ascii_letters evaluates to 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.digits evalutes to '0123456789'

What other functions are there in random?

To find a comprehensive list of functions in random, run this on the Python shell.

help(random)

You will see a list of all functions available in the random module, along with description of each.

Can I use the random module for security or cryptographic purposes?

No. The pseudo-random generators of the random module are meant for modeling and simulation. For generating cryptographically strong and random numbers to be used as passwords, account authentication, security tokens, etc, we should use the secret module.

You can read more about the secret module here.

Related Posts

If you have any questions, please contact me at arulbOsutkNiqlzziyties@gNqmaizl.bkcom. You can also post questions in our Facebook group. Thank you.

Disclaimer: Our website is supported by our users. We sometimes earn affiliate links when you click through the affiliate links on our website.

Last Updated: January 02, 2024.     This post was originally written on January 02, 2022.