by BehindJava

What is Math and Random Modules in Python with Syntax and Examples

Home » python » What is Math and Random Modules in Python with Syntax and Examples

In this tutorial we are going to learn about Math and Random Modules in Python with Syntax and Examples.

Python comes with a built in math module and random module. In this tutorial we will give a brief tour of their capabilities. Usually you can simply look up the function call you are looking for in the online documentation.

  • Math Module
  • Random Module We won’t go through every function available in these modules since there are so many, but we will show some useful ones.

Rounding Numbers

value = 4.35
math.floor(value)
4
math.ceil(value)
5
round(value)
4

Mathematical Constants

Math.pi
3.141592653589793

from math import pi
pi
3.141592653589793

math.e
2.718281828459045

math.tau
6.283185307179586

math.inf
inf

math.nan
nan

Logarithmic Values

math.e
2.718281828459045

# Log Base e
math.log(math.e)
1.0
# Will produce an error if value does not exist mathmatically
math.log(0)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-7563e0a48092> in <module>()
----> 1 math.log(0)

ValueError: math domain error
math.log(10)

2.302585092994046

math.e ** 2.302585092994046
10.000000000000002

Custom Base

# math.log(x,base)
math.log(100,10)
2.0
10**2
100

Trigonometrics Functions

# Radians
math.sin(10)
-0.5440211108893698

math.degrees(pi/2)
90.0

math.radians(180)
3.141592653589793

Random Module

Random Module allows us to create random numbers. We can even set a seed to produce the same random set every time.

The explanation of how a computer attempts to generate random numbers is beyond the scope of this course since it involves higher level mathmatics. But if you are interested in this topic check out:

Understanding a seed

Setting a seed allows us to start from a seeded psuedorandom number generator, which means the same random numbers will show up in a series. Note, you need the seed to be in the same cell if you’re using jupyter to guarantee the same results each time. Getting a same set of random numbers can be important in situations where you will be trying different variations of functions and want to compare their performance on random values, but want to do it fairly (so you need the same set of random numbers each time).

import random
random.randint(0,100)
62

random.randint(0,100)
10
# The value 101 is completely arbitrary, you can pass in any number you want
random.seed(101)
# You can run this cell as many times as you want, it will always return the same number
random.randint(0,100)
74

random.randint(0,100)
24

# The value 101 is completely arbitrary, you can pass in any number you want
random.seed(101)
print(random.randint(0,100))
print(random.randint(0,100))
print(random.randint(0,100))
print(random.randint(0,100))
print(random.randint(0,100))
74
24
69
45
59

Random Integers

random.randint(0,100)
6

Random with Sequences Grab a random item from a list

mylist = list(range(0,20))
mylist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

random.choice(mylist)
12

mylist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Sample with Replacement

Take a sample size, allowing picking elements more than once. Imagine a bag of numbered lottery balls, you reach in to grab a random lotto ball, then after marking down the number, you place it back in the bag, then continue picking another one.

random.choices(population=mylist,k=10)
[15, 14, 17, 8, 17, 2, 19, 17, 6, 1]

Sample without Replacement Once an item has been randomly picked, it can’t be picked again. Imagine a bag of numbered lottery balls, you reach in to grab a random lotto ball, then after marking down the number, you leave it out of the bag, then continue picking another one.

random.sample(population=mylist,k=10)
[17, 19, 11, 14, 1, 3, 4, 10, 5, 15]

Shuffle a list Note: This effects the object in place!

# Don't assign this to anything!
random.shuffle(mylist)
mylist
[9, 11, 7, 12, 10, 16, 0, 2, 18, 13, 3, 5, 17, 1, 15, 6, 14, 19, 4, 8]

Random Distributions Uniform Distribution

# Continuous, random picks a value between a and b, each value has equal change of being picked.
random.uniform(a=0,b=100)
23.852305703497635

Normal/Gaussian Distribution

random.gauss(mu=0,sigma=1)
-0.21390381464435643

Final Note: If you find yourself using these libraries a lot, take a look at the NumPy library for Python, covers all these capabilities with extreme efficiency.