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.