#Day22 - Cheatsheet for the Random Module in Python

#Day22 - Cheatsheet for the Random Module in Python

The Random Module is a pretty popular module in Python. Its most common use is to generate random integers. However, it has various other use cases. We will discuss some of them below

  • Random()
  • Seed
  • Generating a Random Integer
  • Generating a Random Multiple of an Integer
  • Choosing a random element from an iterable
  • Shuffling a List
  • Pick n random elements from an iterable
  • Generate a random GUID

To use any of the functions below, we will first need to import the random module. It is a built-in module in Python

Random()

This is used to generate a random floating point between 0 and 1

import random

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

'''
OUTPUT
0.49871134487223123
0.06941111334065919
0.02980186878132185
0.06790566062222614
0.6563380053516832
'''

Seed

We can set the seed for the random module. Although the integer, float, element from the list will be random. During each run, it'll be the same random value. However, if you use the random module multiple times in a program, it will return a different random value for each call.

random.seed(12)

Generating a Random Integer

This is probably the most popular use case of the random module.

import random

for _ in range(5):
  print(random.randint(0,20))

'''
OUTPUT
8
13
4
5
20
'''

The first argument is the start number and the second argument is the end number. It is inclusive,i.e randint() might return the start number or end number as well

Generating a Random Multiple of an Integer

Suppose, we want to generate a random multiple of 10. There are 2 ways to do this

Method 1

We use the randint() function and simply multiply the returned value with 10

import random

for _ in range(5):
  print(random.randint(0,20)*10)

'''
OUTPUT
130
20
170
100
200
'''

Method 2

We can use randrange(). We can adjust the start number and end number as needed. It is similar to the randint() function but it takes an additional parameter. It takes the step size. So if we set the step size to 10, it will randomly choose from (0,10,20,30.....)

import random

for _ in range(5):
  print(random.randrange(0,100,10))

'''
OUTPUT
130
20
170
100
200
'''

Choosing a random element from an iterable

We can use the random library to chose a random element from an iterable. Note: It will only work with dictionaries if the dictionary has an integer as a key. Read below to find out why

import random

lst = ["hello" , "world" , "!!!" , "Python" , "Medium" , "Hashnod" , "Twitter"]

tpl = ("hello" , "world" , "!!!" , "Python" , "Medium" , "Hashnod" , "Twitter")

dictionary = {idx: val for idx,val in enumerate(lst)}

print(random.choice(lst))
print(random.choice(tpl))
print(random.choice(dictionary))

'''
OUTPUT
world
Hashnod
Medium
'''

The way it works is the following

  • First random generates a random integer between 0 and len(iterable)
  • It used the generated integer as the index and returns iterabel[index] As a result of this, it works with dictionaries only if the dictionary has an integer as it's key

Shuffling a List

We can use the shuffle() function to shuffle a list. The function can NOT be used with a non-mutable object like a tuple. It is an in-place method, i.e it updates the original list.

import random

lst = ["hello" , "world" , "!!!" , "Python" , "Medium"]
for _ in range(5):  
  random.shuffle(lst)
  print(lst)


'''
OUTPUT
['hello', 'Medium', 'world', 'Python', '!!!']
['world', 'hello', 'Medium', 'Python', '!!!']
['!!!', 'world', 'hello', 'Python', 'Medium']
['Python', 'Medium', '!!!', 'hello', 'world']
['!!!', 'hello', 'Medium', 'world', 'Python']
'''

Pick n random elements from an iterable

This is similar to calling the choice() function in a loop n times. Although, this method doesn't work with dictionaries irrespective of whether they have integers as keys or not

import random

lst = ["hello" , "world" , "!!!" , "Python" , "Medium" , "Hashnod" , "Twitter"]

tpl = ("hello" , "world" , "!!!" , "Python" , "Medium" , "Hashnod" , "Twitter")

dictionary = {idx: val for idx,val in enumerate(lst)}

print(random.sample(lst,3))
print(random.sample(tpl,3))


'''
OUTPUT
['!!!', 'Twitter', 'Medium']
['Hashnod', 'Python', '!!!']
'''

Generate a random GUID

We won't be using the random module anymore, instead, we will use the uuid module

import uuid
print(str(uuid.uuid4()))
print(len(str(uuid.uuid4())))

'''
OUTPUT
6dc2ad9b-2707-45ba-b5e8-5e2eb8a1dfe9
36
'''

uuid4() returns an object of type UUID but we can use str() to typecast it. By default, it produces a 32 character string. We can use string operations to modify the GUID.

import uuid
print(str(uuid.uuid4())[0:16])
print(len(str(uuid.uuid4())[0:16]))

'''
OUTPUT
4bde04c7-d749-40
16
'''

The above code generates a 16 character GUID.