Python随机数模块random的简单使用指南

文章目录

  • 主要功能
  • 用法
  • 示例代码
  • 生成随机整数和浮点数
  • 从序列中随机选择元素
  • 随机打乱序列
  • 模拟随机变量分布
  • 正态分布
  • 指数分布
  • 其他分布
  • 使用`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))
    

    运行结果:

    从序列中随机选择元素

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

    运行结果:

    随机打乱序列

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

    运行结果:

    模拟随机变量分布

    正态分布

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

    运行结果:

    指数分布

    虽然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))  
    # 假设输出为某个特定数字(与上次不同,但因为是同一种子,所以可重复)
    

    运行结果:

    使用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位的随机密码
    

    运行结果:

    作者:是先生了

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python随机数模块random的简单使用指南

    发表回复