randrange() in Python (original) (raw)

Last Updated : 25 Mar, 2025

The **randrange() function in Python’s random module is used to generate a random number within a specified range. It allows defining a start, stop, and an optional step value to control the selection of numbers. Unlike randint(), which includes the upper limit, randrange() excludes the stop value. Example:

Python `

import random

print("0-100:", random.randrange(100)) print("50-100:", random.randrange(50, 100)) print("50-100 (step 5):", random.randrange(50, 100, 5))

`

Output

0-100: 48 50-100: 61 50-100 (step 5): 50

**Explanation: The first call picks a random number between 0 and 99. The **second call selects a random number between 50 and 99. The third call chooses a random number between 50 and 99, but only from numbers that are multiples of 5 (like 50, 55, 60, etc.).

Syntax of randrange()

random.randrange(start, stop, step)

**Parameter:

**Return Value: This function returns a randomly selected number from the sequence [start, start+step, start+2*step, …, stop). The stop value is never included.

**Exceptions:

Examples

**Example 1: Generating Even or Odd Numbers

Python `

import random

print("10-50:", random.randrange(10, 50, 2)) print("11-51:", random.randrange(11, 51, 2))

`

Output

10-50: 34 11-51: 37

**Explanation:

**Example 2: Simulating a dice roll

Python `

import random

dice_roll = random.randrange(1, 7) print(dice_roll)

`

**Explanation: This function randomly selects an integer between 1 and 6, simulating a dice roll.

**Example 3: Random selection from a list

Python `

import random

a = [10, 20, 30, 40, 50] random_idx = random.randrange(len(a)) print(a[random_idx])

`

**Explanation: randrange(len(a)) selects a random index from 0 to 4. The corresponding value from a is then printed.

Handling Exceptions

**Case 1: Non-integer Arguments

The randrange() function does not accept float values. Instead of allowing a crash, we can handle it gracefully.

Python `

import random

start, stop, step = 14.5, 100, 1 # Example invalid input

try: if not all(isinstance(i, int) for i in [start, stop, step]): raise TypeError("All arguments must be integers.") print(random.randrange(start, stop, step)) except TypeError as e: print("Error:", e)

`

Output

Error: All arguments must be integers.

**Explanation: This function ensures start, stop, and step are integers using **all(isinstance(i, int) for i in [start, stop, step]). If not, it raises a TypeError with a clear message. Upon valid input, **random.randrange() generates a number. A try-except block catches TypeError and displays a user-friendly message.

**Case 2: Invalid Range (start >= stop)

The start value must always be less than stop. Instead of allowing an error, we can handle it gracefully by swapping values if necessary.

Python `

import random

start, stop, step = 500, 100, 1 # Example invalid input

try: if start >= stop: raise ValueError("Start value must be less than stop value.") print(random.randrange(start, stop, step)) except ValueError as e: print("Error:", e)

`

Output

Error: Start value must be less than stop value.

**Explanation: This function validates that **start < stop to ensure a proper range. If not, it raises a **ValueError with a clear message. When valid, **random.randrange() generates a number. A **try-except block catches the ValueError and provides a user-friendly error message.

Practical application: Simple game simulation

Random number generation is widely used in games. Below is an example of a simple game where two players roll a dice until one reaches a score of 100.

Python `

import random

p1, p2, t = 0, 0, 0 # p1: Player 1 score, p2: Player 2 score, t: Turn counter

while True: t += 1 # Increment turn count r1, r2 = random.randrange(1, 11), random.randrange(1, 11) # r1: Player 1 roll, r2: Player 2 roll

p1 += r1  # Add roll value to Player 1's score
p2 += r2  # Add roll value to Player 2's score

print(f"Turn {t}: P1 = {p1}, P2 = {p2}")  # Display scores

if p1 >= 100:  # Check if Player 1 wins
    print("P1 wins!")
    break
if p2 >= 100:  # Check if Player 2 wins
    print("P2 wins!")
    break

`

Output

Turn 1: Player 1 = 7, Player 2 = 9 Turn 2: Player 1 = 15, Player 2 = 10 Turn 3: Player 1 = 19, Player 2 = 15 Turn 4: Player 1 = 28, Player 2 = 25 Turn 5: Player 1 = 29, Player 2 = 34 Turn 6: Player 1 ...

**Explanation: In this game, both players take turns rolling a number between 1 and 10, adding it to their scores. The game continues until one player reaches 100 points and wins.