In this Python tutorial, you will learn how to use random.seed() function to initialize a pseudo-random number generator to generate the same random data every time. Practically computers do not generate truly random numbers, it uses a seed value as a base or starting point to generate a random number.
The seed value acts as a pseudo-random number generator, and if the seed value remains the same, the computer will generate the same random number again and again. When we generate a random number using
random.randint()
the random module, use the computer seed value as a base for generating the random number. The first seed value is determined by using the timestamp of the computer system, then the currently generated random number becomes the seed value for the next random generator's values.
Python random module provides the
seed()
function, which allows us to set the seed value for the random number generator. By setting the seed value to a constant number, we can generate the same random number and pick the same random item from a list or range.
What is a random seed in Python?
To generate a random number, Python’s random module uses a seed value, which is also known as the random number generator. The seed value is generally determined by the current timestamp(current system time) of the operating system. The seed value act as a starting point or a base value to generate a random number or value. Although the value of the seed is automatically set by the operating system itself, we can also use the
random.seed()
function to set it to a constant value.
By setting it to a constant value, we can generate the same random number again and again or pick the same random item from a list again and again. Before we learn how to use the
random.seed()
function, let’s discuss why and when to use it.
When and why use the random.seed() in Python?
The seed value is very important when we want to generate random secure encrypted keys. There, we just not only depend on the automatic seed value suggested by the operating system. We put our own custom seed value to initialize a secure and robust pseudo-random number generator.
Here comes the
random.seed()
function. This function allows us to set a custom seed value that generates a pseudo-random number generator which acts as a base value for generating a random number. By setting a custom seed value, we have a predictable source of a random number that is only known to us.
random.seed() syntax
import random random.seed(a=None, version=2)
The random seed() function can accept two argument values and both are optional.
Arguments
a: It is the seed value. By default its value is None, so it uses the current system time of the operating system. version: It is also an optional argument whose default value is 2. In version 2, the specified seed str, bytes, and byte array objects get converted into an int.
Generate the same random number every time using random.seed()
By setting the random.seed() value to a constant number, we can generate the same number every time.
Example
import random #set the random seed to constant number 4 random.seed(4) ##generate a random number print("random number 1:", random.randint(1,10000)) #set the random seed to constant number 4 random.seed(4) ##generate a random number print("random number 2:", random.randint(1,10000))
Output
random number 1: 3868 random number 2: 3868
The seed number is automatically set to a different value after we perform any random generation of an operation. So in order to generate the same random number, we have to set the seed value to a constant before generating the random number every time. If we call the
randint()
function twice before calling the
seed()
function, we will not get the same random number.
Example
import random #set the random seed to constant number 4 random.seed(4) ##generate a random number print("random number 1:", random.randint(1,10000)) ##generate a random number print("random number 2:", random.randint(1,10000))
Output
random number 1: 3868 random number 2: 4970
Here you can see that the random 2 is the completely random number this is because the seed value is set to something different for it.
Get a seed value used by a random Generator
Python does not store the seed value in the memory, it is automatically generated with every call of generating some random number. It also does not provide any method or property to get the current seed value. So in order to get the seed value, we have to save our custom seed value in a Python identifier so that we can reuse the seed value throughout the program.
For instance, if we want to generate the same random result for particular cases in our program, there we can simply call the seed function with custom seed_value before calling any random operation.
Example
import random import sys # generate a random seed number between 0 to max number seed_value = random.randint(0, sys.maxsize) # print the seed value print("Your seed value is:", seed_value) ''' now we can use the seed value anywhere throughout the program when we generate the same result ''' #generate a random number between 100 and 999 #with the custom seed value #set the seed value random.seed(seed_value) print("Random Number 1 (100, 999):",random.randint(100, 999)) random.seed(seed_value) print("Random Number 2 (100, 999):",random.randint(100, 999))
Output
Random Number 1 (100, 999): 842 Random Number 2 (100, 999): 842
Common Examples of random.seed() function
Now you know how to use the Python seed() function, now let’s discuss some of the common use cases of random.seed() function.
Example 1: Use the random seed to choose the same item from the list randomly.
With the random choice() function, we can choose a random item from a Python list. The random choice also uses the seed value to pick a random item from the list randomly. And by setting the seed() to a constant value before calling the
choice()
function, we can pick the same item.
import random programming_languages = ['C','C++', 'Java', 'Python', 'JavaScript', 'Ruby', 'Kotlin'] #set the seed value to 50 random.seed(50) print("Random Programming Language 1:", random.choice(programming_languages)) #again set the seed value to 50 random.seed(50) print("Random Programming Language 2:", random.choice(programming_languages))
Output
Random Programming Language 1: Python Random Programming Language 2: Python
Example 2: Use the random seed to choose the same multiple items from the list randomly.
The random
sample()
function allows us to pick n number of items from the list randomly. Similar to the
random.choice()
method the
sample()
method picks the same items if we set a custom seed value before calling the function.
import random programming_languages = ['C','C++', 'Java', 'Python', 'JavaScript', 'Ruby', 'Kotlin'] #set the seed value to 50 random.seed(50) print("Random 3 Programming Languages 1:", random.sample(programming_languages,3)) #again set the seed value to 50 random.seed(50) print("Random 3 Programming Languages 2:", random.sample(programming_languages,3))
Output
Random 3 Programming Languages 1: ['Python', 'Java', 'Ruby'] Random 3 Programming Languages 2: ['Python', 'Java', 'Ruby']
Example 2: Use the random seed to shuffle the list the same randomly.
The random shuffle() function can randomly shuffle the items of a list. But by setting the seed value before shuffling the list, we can get the same shuffling result.
import random programming_languages = ['C','C++', 'Java', 'Python', 'JavaScript', 'Ruby', 'Kotlin'] #set the seed value to 50 random.seed(50) random.shuffle(programming_languages) print("Random shuffle 1:",programming_languages ) ''' redefine the actual order of list because the order has been shuffled ''' programming_languages = ['C','C++', 'Java', 'Python', 'JavaScript', 'Ruby', 'Kotlin'] #again set the seed value to 50 random.seed(50) random.shuffle(programming_languages) print("Random shuffle 2:",programming_languages )
Output
Random shuffle 1: ['C', 'Kotlin', 'JavaScript', 'C++', 'Ruby', 'Java', 'Python'] Random shuffle 2: ['C', 'Kotlin', 'JavaScript', 'C++', 'Ruby', 'Java', 'Python']
Conclusion
To generate a random number, computers use the seed value, which provides a start point or base to generate a random number. To determine the seed value, the random module uses the default operating system time system and uses it as a seed value to generate a random number. The random module also provides the seed() method in case the developer does not want to use the default systems and wants to generate a predictable and secure random number using a custom seed value.
People are also reading:
- Python Dictionary Get: A Complete Guide
- Python List Methods: All you need to Know
- Move File in Python: A Complete Guide
- Python List
- Python NameError name is not defined Solution
- List append vs extend method in Python
- Python KeyError: A Complete Guide
- Python typeerror: ‘list’ object is not callable Solution
- Replace Item in Python List
- Read File in Python
Leave a Comment on this Post