Python random 模块详解
                           
天天向上
发布: 2025-03-18 00:29:45

原创
284 人浏览过

random 模块用于 生成随机数,并提供了多种 随机抽样、洗牌、随机选择 等函数,广泛应用于 数据模拟、游戏开发、密码生成、概率计算 等场景。


1. 导入 random 模块

random 是 Python 内置模块,无需额外安装:

import random

2. 生成随机数

2.1 生成随机浮点数

函数说明
random.random()生成 0 到 1 之间的随机浮点数(不包含 1)
random.uniform(a, b)生成指定范围 [a, b] 之间的随机浮点数

示例:

print(random.random())        # 例如:0.3742(范围 0~1)
print(random.uniform(1, 10))  # 例如:5.763(范围 1~10)

2.2 生成随机整数

函数说明
random.randint(a, b)生成 [a, b] 之间的随机整数(包含 b
random.randrange(start, stop, step)生成符合步长 step 的随机整数,不包含 stop

示例:

print(random.randint(1, 10))  # 生成 1~10 之间的整数(包含 10)
print(random.randrange(1, 10, 2))  # 生成奇数:1, 3, 5, 7, 9

2.3 生成随机二进制、八进制、十六进制数

print(bin(random.randint(0, 255)))  # 随机二进制数
print(oct(random.randint(0, 255)))  # 随机八进制数
print(hex(random.randint(0, 255)))  # 随机十六进制数

3. 随机选择

3.1 random.choice()

从序列(列表、元组、字符串)中随机选择一个元素:

colors = ["red", "blue", "green", "yellow"]
print(random.choice(colors))  # 可能输出 "green"

3.2 random.choices()

带权重的随机抽样(可重复):

items = ["apple", "banana", "cherry"]
weights = [10, 1, 1]  # "apple" 出现概率更高
print(random.choices(items, weights=weights, k=5))

3.3 random.sample()

从序列中随机抽取 不重复k 个元素:

numbers = list(range(1, 11))
print(random.sample(numbers, 3))  # 可能输出 [2, 7, 9]

4. 洗牌 shuffle()

将列表元素随机打乱:

cards = [1, 2, 3, 4, 5]
random.shuffle(cards)
print(cards)  # 可能输出 [3, 1, 5, 4, 2]

5. 生成随机密码

import string

def generate_password(length=8):
    characters = string.ascii_letters + string.digits + string.punctuation
    return ''.join(random.choices(characters, k=length))

print(generate_password(12))  # 可能输出 "X$9g@3p!LzQ"

6. 设置随机种子

使用 random.seed(n) 设定随机种子,保证结果可复现:

random.seed(42)
print(random.randint(1, 100))  # 每次运行都输出相同的值

7. 其他高级应用

7.1 模拟掷骰子

def roll_dice():
    return random.randint(1, 6)

print(roll_dice())  # 可能输出 4

7.2 模拟抽奖

participants = ["Alice", "Bob", "Charlie", "David"]
winner = random.choice(participants)
print(f"中奖者是:{winner}")

7.3 生成随机颜色

def random_color():
    return "#{:06x}".format(random.randint(0, 0xFFFFFF))

print(random_color())  # 可能输出 "#f2a1b3"

8. 总结

功能代码示例
生成 0~1 之间的随机浮点数random.random()
生成 [a, b] 范围内的浮点数random.uniform(a, b)
生成 [a, b] 之间的整数random.randint(a, b)
生成符合步长 step 的随机整数random.randrange(a, b, step)
从序列中随机选取一个元素random.choice(seq)
随机抽取 k 个不重复元素random.sample(seq, k)
随机抽取 k 个带权重元素random.choices(seq, weights, k)
打乱列表顺序random.shuffle(seq)
生成随机密码random.choices(string.ascii_letters + string.digits, k=length)
设定随机种子(结果可复现)random.seed(n)

random 模块是 Python 中生成随机数的核心工具,广泛用于数据分析、模拟实验、游戏开发等领域!

发表回复 0

Your email address will not be published. Required fields are marked *