NumPy随机数生成函数的多种实现方法

 更新时间:2026年01月07日 09:23:35   作者:追逐此刻  
NumPy的numpy.random模块提供了多种随机数生成函数,包括基础随机数生成、概率分布抽样和随机排列,这些函数适用于各种场景,下面就来详细的介绍一下,感兴趣的可以了解一下

NumPy 的 numpy.random 模块提供了丰富的随机数生成函数,覆盖基础随机数组、概率分布抽样和随机排列等功能。以下是常用函数的详细解析:

一、基础随机数生成函数

1.np.random.rand(d0, d1, ..., dn)

  • 功能:生成 [0, 1) 均匀分布的随机浮点数数组
  • 参数d0, d1... 为数组维度(整数)
  • 示例
    np.random.rand(2, 3)  # 生成 2行3列的随机数组
    # 输出:array([[0.12, 0.34, 0.56], [0.78, 0.90, 0.23]])
    

2.np.random.randn(d0, d1, ..., dn)

  • 功能:生成符合标准正态分布(μ=0, σ=1)的随机数
  • 参数:同 rand()
  • 示例
    np.random.randn(2)  # 生成2个标准正态分布随机数
    # 输出:array([-0.45, 1.23])
    

3.np.random.randint(low, high=None, size=None, dtype=int)

  • 功能:生成 [low, high) 区间的整数随机数
  • 参数
    • low:下限(包含)
    • high:上限(不包含,若未提供则从0开始)
    • size:输出形状
  • 示例
    np.random.randint(1, 10, size=(3,))  # 生成3个1-9的整数
    # 输出:array([5, 2, 8])
    

4.np.random.random(size=None)

  • 功能:生成 [0.0, 1.0) 均匀分布的随机浮点数(单个数或数组)
  • 示例
    np.random.random((2,2))  # 2x2随机矩阵
    # 输出:array([[0.45, 0.78], [0.12, 0.90]])
    

二、概率分布抽样函数

1.np.random.uniform(low=0.0, high=1.0, size=None)

  • 功能:生成指定区间 [low, high) 的均匀分布随机数
  • 示例
    np.random.uniform(-1, 1, size=3)  # 3个[-1,1)的均匀分布数
    # 输出:array([-0.23, 0.56, -0.89])
    

2.np.random.normal(loc=0.0, scale=1.0, size=None)

  • 功能:生成指定均值(loc)和标准差(scale)的正态分布
  • 示例
    np.random.normal(loc=5, scale=2, size=2)  # N(5, 2²)的2个样本
    # 输出:array([4.89, 6.12])
    

3.np.random.binomial(n, p, size=None)

  • 功能:生成二项分布(n次试验,成功概率p)的随机数
  • 示例
    np.random.binomial(n=10, p=0.5, size=3)  # 3次10重伯努利试验的成功次数
    # 输出:array([5, 7, 4])
    

4.np.random.poisson(lam=1.0, size=None)

  • 功能:生成泊松分布(λ=lam)的随机数
  • 示例
    np.random.poisson(lam=3, size=4)  # λ=3的4个泊松样本
    # 输出:array([2, 4, 3, 5])
    

三、随机抽样与排列

1.np.random.choice(a, size=None, replace=True, p=None)

  • 功能:从序列 a 中随机抽样
  • 参数
    • replace:是否允许重复抽样(默认True)
    • p:各元素抽样概率(需与a长度相同)
  • 示例
    np.random.choice([1,2,3,4], size=3, p=[0.1,0.2,0.3,0.4])
    # 按概率抽样3个元素,输出:array([3,4,4])
    

2.np.random.shuffle(x)

  • 功能:原地打乱数组x(修改原数组)
  • 示例
    arr = np.array([1,2,3,4])
    np.random.shuffle(arr)  # arr变为 [3,1,4,2]
    

3.np.random.permutation(x)

  • 功能:生成数组x的随机排列(不修改原数组)
  • 示例
    np.random.permutation([1,2,3,4])  # 输出:array([2,4,1,3])
    

四、随机种子设置

np.random.seed(42)  # 设置随机种子,保证结果可复现
np.random.rand(2)   # 每次运行结果相同:array([0.37, 0.95])

关键区别总结

函数组核心特点典型应用场景
rand/randn无需参数直接指定维度,快捷生成数组快速创建随机矩阵
uniform/normal可自定义分布参数(区间/均值等)模拟特定概率分布的数据
choice/shuffle针对序列的抽样与重排随机选样、打乱数据顺序

到此这篇关于NumPy随机数生成函数的多种实现方法的文章就介绍到这了,更多相关NumPy随机数生成函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django实现基于类的分页功能

    Django实现基于类的分页功能

    这篇文章主要为大家详细介绍了Django实现基于类的分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python之lambda表达式与sort函数中的key用法

    python之lambda表达式与sort函数中的key用法

    这篇文章主要介绍了python之lambda表达式与sort函数中的key用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python中dict排序的两种方法

    Python中dict排序的两种方法

    字典本身是无序的,所以它每次输出都是不一样的,顺序都是乱的,那么字典如何排序,本文主要介绍了Python中dict排序的两种方法,感兴趣的可以了解一下
    2024-01-01
  • 解析Python编程中的包结构

    解析Python编程中的包结构

    这篇文章主要介绍了解析Python编程中的包结构,包括对一些包管理工具的介绍,需要的朋友可以参考下
    2015-10-10
  • Python解惑之True和False详解

    Python解惑之True和False详解

    这篇文章主要给大家介绍了关于Python中常用的数据类型bool(布尔)类型的两个值:True和False的相关资料,通过示例代码给大家进行了解惑,让对这两个值有所疑惑的朋友们能有起到一定的帮助,需要的朋友下面来一起看看吧。
    2017-04-04
  • pycharm终端无法运行的问题以及解决

    pycharm终端无法运行的问题以及解决

    这篇文章主要介绍了pycharm终端无法运行的问题以及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 人生苦短我用python python如何快速入门?

    人生苦短我用python python如何快速入门?

    这篇文章主要教大家如何快速入门python,一个简短而全面的入门教程带你走入Python的大门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python 使用office365邮箱的示例

    Python 使用office365邮箱的示例

    这篇文章主要介绍了Python 使用office365邮箱的示例,帮助大家利用python进行高效办公,感兴趣的朋友可以了解下
    2020-10-10
  • 深入了解Python Opencv数据增强

    深入了解Python Opencv数据增强

    常见的数据增强操作有:按比例放大或缩小图片、旋转、平移、水平翻转、改变图像通道等。本文将通过Python OpenCV实现这些操作,需要的可以参考一下
    2022-02-02
  • python操作XML格式文件的一些常见方法

    python操作XML格式文件的一些常见方法

    最近有同学询问如何利用Python处理xml文件,特此整理一篇比较简洁的操作手册,下面这篇文章主要给大家介绍了关于python操作XML格式文件的一些常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论