文章目录

  • 主要功能
  • 用法
  • 示例代码
  • 生成随机整数和浮点数
  • 从序列中随机选择元素
  • 随机打乱序列
  • 模拟随机变量分布
  • 正态分布
  • 指数分布
  • 其他分布
  • 使用`random.seed()`设置随机种子
  • 使用`random`模块进行简单的随机密码生成


Python的random模块提供了各种用于生成随机数的函数。这个模块在需要随机选择元素、打乱序列、模拟概率分布等场景时非常有用。下面我将详细介绍random模块的一些主要功能、用法和常见用法,并给出相应的示例代码。

主要功能

  1. 基本随机数生成:生成指定范围内的随机整数、随机浮点数等。
  2. 随机选择:从序列中随机选择一个或多个元素。
  3. 随机打乱:随机打乱序列中的元素顺序。
  4. 随机变量:模拟常见的随机变量分布,如正态分布、指数分布等。

用法

以下是一些常用的函数及其用法:

  • random():生成一个[0.0, 1.0)之间的随机浮点数。
  • randint(a, b):生成一个[a, b]之间的随机整数。
  • randrange([start,] stop[, step]):生成一个[start, stop)之间以step为步长的随机整数。
  • choice(seq):从非空序列seq中随机选择一个元素。
  • shuffle(list):将list中的元素随机打乱。
  • sample(population, k):从population中随机选择k个不重复的元素。
  • uniform(a, b):生成一个[a, b]之间的随机浮点数。
  • normalvariate(mu, sigma):生成一个符合正态分布的随机数,mu是均值,sigma是标准差。

示例代码

生成随机整数和浮点数

import random

# 生成0到10之间的随机整数(包括0和10)
print(random.randint(0, 10))

# 生成1到10之间(不包括10)的随机整数
print(random.randrange(1, 10))

# 生成0到1之间的随机浮点数(不包括1)
print(random.random())

# 生成1到3之间的随机浮点数
print(random.uniform(1, 3))

运行结果:

python rand 小数_python

从序列中随机选择元素

# 从列表中随机选择一个元素
my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))

# 从列表中随机选择3个不重复的元素
print(random.sample(my_list, 3))

运行结果:

python rand 小数_开发语言_02

随机打乱序列

# 打乱列表中的元素顺序
random.shuffle(my_list)
print(my_list)

运行结果:

python rand 小数_开发语言_03

模拟随机变量分布

正态分布

# 生成一个符合正态分布的随机数,均值为0,标准差为1
print(random.normalvariate(0, 1))

运行结果:

python rand 小数_python_04

指数分布

虽然random模块没有直接提供指数分布的函数,但你可以使用expovariate函数从randomexpovariate模块中导入:

from random import expovariate

# 生成一个符合指数分布的随机数,λ(lambda)是分布率参数(平均到达率是λ的倒数)
print(expovariate(1.0))  # λ=1.0

但请注意,expovariate是直接在random模块中定义的,不需要额外导入。

其他分布

对于其他更复杂的分布,你可能需要使用numpy库,它提供了更多的统计函数和随机变量生成器。

使用random.seed()设置随机种子

设置随机种子可以确保每次运行代码时生成的随机数序列是相同的,这在需要可重复实验的情况下很有用。

import random

# 设置随机种子
random.seed(1)

# 现在,每次使用相同的种子调用random函数,都会得到相同的结果
print(random.randint(0, 10))  
# 假设输出为5(实际输出可能因版本而异)
print(random.randint(0, 10))  
# 假设输出为某个特定数字(与上次不同,但因为是同一种子,所以可重复)

运行结果:

python rand 小数_python_05

使用random模块进行简单的随机密码生成

import random
import string

def generate_password(length=10):
    # 选择字母和数字的集合
    characters = string.ascii_letters + string.digits
    # 使用random.choices函数(注意不是choice,它允许重复)
    # 并指定k=length以生成指定长度的密码
    return ''.join(random.choices(characters, k=length))

print(generate_password(15))  # 生成一个15位的随机密码

运行结果:

python rand 小数_python_06