random.randint() Function Explained
random.randint() gives you a random whole number between two values.
It is part of Python’s random module, so you must import random before using it. A very important detail is that random.randint() includes both the start and end values.
Quick answer
import random
number = random.randint(1, 10)
print(number)
Use random.randint(start, end) to get a random integer between start and end, including both values.
What random.randint() does
random.randint():
- Returns a random integer
- Belongs to Python’s
randommodule - Requires
import randomfirst - Includes both the starting and ending numbers
This makes it useful when you need a random whole number for things like:
- Dice rolls
- Guessing games
- Simple test values
- Random positions or indexes
If you want a broader introduction to random tools in Python, see the Python random module overview.
Basic syntax
The basic syntax is:
random.randint(a, b)
Here:
ais the smallest possible integerbis the largest possible integer- The result can be any whole number from
atob
Example:
import random
number = random.randint(5, 8)
print(number)
Possible output:
7
It could also print 5, 6, or 8.
How the range works
The range used by random.randint() is inclusive.
That means:
import random
print(random.randint(1, 3))
Can return:
123
This is different from Python’s range() function, where the stop value is not included.
For example:
print(list(range(1, 3)))
Output:
[1, 2]
This difference causes a lot of beginner mistakes:
random.randint(1, 3)includes3range(1, 3)does not include3
Simple example
Here is a simple dice roll example:
import random
roll = random.randint(1, 6)
print("You rolled:", roll)
Example output:
You rolled: 4
The output changes each time you run the program.
This is a common beginner use case because it matches real-world rules:
- A die has values from 1 to 6
- Both 1 and 6 should be possible
randint(1, 6)fits perfectly
Using random.randint() in real tasks
Pick a random dice roll
import random
dice = random.randint(1, 6)
print(dice)
Choose a random number for a guessing game
import random
secret_number = random.randint(1, 20)
print(secret_number)
You can see this idea in a full beginner project: Python number guessing game example.
Create simple test data
import random
score = random.randint(0, 100)
print("Test score:", score)
This is useful when you want sample numbers while practicing.
Generate a random index carefully
You can use randint() to choose an index, but you must be careful to stay inside the valid range.
import random
names = ["Ana", "Ben", "Cara"]
index = random.randint(0, len(names) - 1)
print("Index:", index)
print("Chosen name:", names[index])
Example output:
Index: 2
Chosen name: Cara
If you want a random item from a list, random.choice() is often simpler than generating an index yourself.
Common mistakes
Forgetting to import the random module
This causes a NameError.
Wrong:
number = random.randint(1, 10)
print(number)
Fix:
import random
number = random.randint(1, 10)
print(number)
If you run into this, see how to fix NameError: name is not defined.
Assuming the end value is excluded
Some beginners think this:
random.randint(1, 10)
returns numbers from 1 to 9.
That is incorrect. It can return 10 too.
Passing non-integer values
randint() is meant for integers.
Problem example:
import random
number = random.randint(1.5, 5.5)
print(number)
This can raise an error because the arguments should be whole numbers.
Use integers instead:
import random
number = random.randint(1, 5)
print(number)
Using a start value larger than the end value
Problem example:
import random
number = random.randint(10, 1)
print(number)
This can raise a ValueError because the lower value must come first.
Correct version:
import random
number = random.randint(1, 10)
print(number)
When to use randint() vs other random functions
Use random.randint() when you need a random whole number in an inclusive range.
Choose other functions when the task is different:
- Use
randint()for a random integer like1to6 - Use
random.choice()for a random item from a list - Use
random.randrange()when you want behavior more likerange() - Do not use
randint()for passwords, tokens, or other security-sensitive code
For security-related randomness, use the secrets module instead of random.
FAQ
Does random.randint() include the last number?
Yes. Both the start and end numbers are included.
Can random.randint() return negative numbers?
Yes. It can return any integer in the given inclusive range, including negative values.
Example:
import random
print(random.randint(-5, 5))
What happens if I use decimal numbers with randint()?
randint() is for integers. Non-integer values can cause an error.
Do I need to import random first?
Yes. Use import random before calling random.randint().
Should I use random.randint() for passwords or security tokens?
No. For security-related randomness, use the secrets module instead.