random 模块是 Python 中用于生成随机数的标准库。它提供了多种生成随机数的方法,可以用于各种场景,例如:
-
随机抽样: 从序列中随机选择元素
-
随机排列: 将序列中的元素随机排序
-
随机生成数值: 生成随机整数、浮点数等
常用函数:
-
random(): 生成 0 到 1 之间的随机浮点数
-
uniform(a, b): 生成 a 到 b 之间的随机浮点数
-
randint(a, b): 生成 a 到 b 之间的随机整数 (包含 a 和 b)
-
randrange(start, stop[, step]): 生成 start 到 stop 之间以 step 为步长的随机整数
-
choice(seq): 从序列 seq 中随机选择一个元素
-
shuffle(seq): 将序列 seq 中的元素随机排列
-
sample(population, k): 从 population 中随机选择 k 个元素 (不放回)
示例:
import random
# 生成 0 到 1 之间的随机浮点数
random_float = random.random()
print(random_float)
# 生成 1 到 10 之间的随机整数
random_integer = random.randint(1, 10)
print(random_integer)
# 从列表中随机选择一个元素
my_list = ['apple', 'banana', 'orange']
random_choice = random.choice(my_list)
print(random_choice)
# 将列表中的元素随机排列
random.shuffle(my_list)
print(my_list)
模拟掷骰子:
import random
# 模拟掷一次骰子
dice_roll = random.randint(1, 6)
print("你掷出了:", dice_roll)
# 模拟掷多次骰子并统计结果
rolls = []
for _ in range(100):
rolls.append(random.randint(1, 6))
print("点数\t出现次数")
for i in range(1, 7):
print(f"{i}\t{rolls.count(i)}")
生成随机密码:
import random
import string
# 定义密码包含的字符集
characters = string.ascii_letters + string.digits + string.punctuation
# 生成指定长度的随机密码
password_length = 12
password = ''.join(random.choice(characters) for _ in range(password_length))
print("生成的随机密码:", password)
随机抽取中奖用户:
import random
users = ["Alice", "Bob", "Charlie", "David", "Emily"]
winner = random.choice(users)
print("恭喜", winner, "中奖了!")
模拟随机漫步:
import random
position = 0
walk = []
steps = 1000
for _ in range(steps):
step = 1 if random.randint(0, 1) else -1
position += step
walk.append(position)
print("最终位置:", position)
随机生成彩票号码:
import random
# 生成 6 个不重复的随机数
lottery_numbers = random.sample(range(1, 50), 6)
# 对号码进行排序
lottery_numbers.sort()
print("本期彩票号码:", lottery_numbers)
按概率选择元素:
import random
# 定义每个选项的概率
options = {
"A": 0.2,
"B": 0.5,
"C": 0.3,
}
# 使用 random.choices 按概率选择
choice = random.choices(list(options.keys()), weights=list(options.values()), k=1)[0]
print("选择的结果:", choice)
生成用户名和密码
import random
import string
def generate_username():
"""生成一个随机用户名。"""
# 定义用户名的字符集。
chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
# 生成一个长度为8-12的随机用户名。
username = ''.join(random.choice(chars) for i in range(random.randint(8, 12)))
return username
def generate_password():
"""生成一个随机密码。"""
# 定义密码的字符集。
chars = string.ascii_lowercase + string.ascii_uppercase + string.digits + '!@#$%^&*()'
# 生成一个长度为8-12的随机密码。
password = ''.join(random.choice(chars) for i in range(random.randint(8, 12)))
return password
# 生成一个随机用户名和密码。
username = generate_username()
password = generate_password()
# 打印生成的用户名和密码。
print("用户名:", username)
print("密码:", password)
更多功能
random 模块还提供了其他一些功能,例如:
-
seed(): 设置随机数生成器的种子,用于生成可复现的随机序列
-
getstate() 和 setstate(): 获取和设置随机数生成器的状态
-
gauss(mu, sigma): 生成符合正态分布的随机数
-
expovariate(lambd): 生成符合指数分布的随机数
注意: random 模块生成的随机数是伪随机数,并非真正的随机数。但对于大多数应用来说,已经足够随机了。