numpy.random模块常用函数详解与使用指南

拾光
拾光
发布时间:2026-10-13 | 3人浏览过
原创

本文系统梳理numpy.random模块的核心函数,涵盖uniform、rand、randint等基础随机数生成方法,详解choice抽取、permutation与shuffle序列操作,以及seed随机种子设置。通过具体代码示例展示各函数的参数用法、取值范围及数组维度处理,帮助开发者高效掌握NumPy随机数生成技巧。

numpy.random模块概述

random模块主要用于生成各类随机数,以下将详细介绍该模块中几个常用函数的具体用法。


from numpy import random

均匀分布随机数生成

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

该函数用于生成size个符合均匀分布的浮点数,其取值区间为[low, high),默认情况下取值范围为[0, 1.0)。


>>> random.uniform()
0.3999807403689315
>>> random.uniform(size=1)
array([0.55950578])
>>> random.uniform(5, 6)
5.293682668235986
>>> random.uniform(5, 6, size=(2,3))
array([[5.82416021, 5.68916836, 5.89708586],
    [5.63843125, 5.22963754, 5.4319899 ]])

rand函数与多维数组生成

numpy.random.rand(d0, d1, ..., dn)

此函数生成一个形状为(d0, d1, ..., dn)的数组,数组元素取自[0, 1)区间上的均匀分布。若未提供参数,则仅生成单个数值。


>>> random.rand()
0.4378166124207712
>>> random.rand(1)
array([0.69845956])
>>> random.rand(3,2)
array([[0.15725424, 0.45786148],
    [0.63133098, 0.81789056],
    [0.40032941, 0.19108526]])
>>> random.rand(3,2,1)
array([[[0.00404447],
    [0.3837963 ]],

    [[0.32518355],
    [0.82482599]],

    [[0.79603205],
    [0.19087375]]])

随机整数生成函数

numpy.random.randint(low, high=None, size=None, dtype='I')

该函数生成size个整数,取值区间为[low, high)。若未指定high参数,则取值区间默认为[0, low)。


>>> random.randint(8)
5
>>> random.randint(8, size=1)
array([1])
>>> random.randint(8, size=(2,2,3))
array([[[4, 7, 0],
    [1, 4, 1]],

    [[2, 2, 5],
    [7, 6, 4]]])
>>> random.randint(8, size=(2,2,3), dtype='int64')
array([[[5, 5, 6],
    [2, 7, 2]],

    [[2, 7, 6],
    [4, 7, 7]]], dtype=int64)

numpy.random.random_integers(low, high=None, size=None)

此函数生成size个整数,取值区间为[low, high](注意左右均为闭区间)。若未指定high参数,则取值区间为[1, low]。


>>> random.randint(8)
>>> random.randint(8, size=1)
array([1])
>>> random.randint(8, size=(2,2,3))
array([[[4, 7, 0],
    [1, 4, 1]],

    [[2, 2, 5],
    [7, 6, 4]]])
>>> random.randint(8, size=(2,2,3), dtype='int64')
array([[[5, 5, 6],
    [2, 7, 2]],

    [[2, 7, 6],
    [4, 7, 7]]], dtype=int64)

基础随机浮点数与相关函数

numpy.random.random(size=None)

该函数用于生成[0.0, 1.0)区间内的浮点数。


>>> random.random(5)
array([0.94128141, 0.98725499, 0.48435957, 0.90948135, 0.40570882])
>>> random.random()
0.49761416226728084

以下函数具有相同的用法:

  • numpy.random.random_sample
  • numpy.random.ranf
  • numpy.random.sample(用于抽取不重复的元素)

随机字节与元素抽取

numpy.random.bytes(length)

该函数用于生成指定长度的随机字节。


>>> random.bytes(1)
b'%'
>>> random.bytes(2)
b'\xd0\xc3'

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

此函数从数组a中选取size个随机元素。参数replace=True表示允许重复抽取,参数p指定了a中每个元素被选中的概率。

若参数a为整数,则该函数等效于对arange(a)进行抽取。


>>> random.choice(5)
3
>>> random.choice([0.2, 0.4])
0.2
>>> random.choice([0.2, 0.4], p=[1, 0])
0.2
>>> random.choice([0.2, 0.4], p=[0, 1])
0.4
>>> random.choice(5, 5)
array([1, 2, 4, 2, 4])
>>> random.choice(5, 5, False)
array([2, 0, 1, 4, 3])
>>> random.choice(100, (2, 3, 5), False)
array([[[43, 81, 48, 2, 8],
    [33, 79, 30, 24, 83],
    [ 3, 82, 97, 49, 98]],

    [[32, 12, 15, 0, 96],
    [19, 61, 6, 42, 60],
    [ 7, 93, 20, 18, 58]]])

序列随机打乱操作

numpy.random.permutation(x)

该函数用于随机打乱x中的元素。若x为整数,则打乱arange(x);若x为数组,则先复制x,仅对副本的第一维索引进行打乱处理,原数组保持不变。


>>> random.permutation(5)
array([1, 2, 3, 0, 4])
>>> random.permutation(5)
array([1, 4, 3, 2, 0])
>>> random.permutation([[1,2,3],[4,5,6]])
array([[1, 2, 3],
    [4, 5, 6]])
>>> random.permutation([[1,2,3],[4,5,6]])
array([[4, 5, 6],
    [1, 2, 3]])

numpy.random.shuffle(x)

此函数功能与permutation类似,用于随机打乱x中的元素。若x为整数,则打乱arange(x)。与permutation不同,shuffle会直接修改原数组x。


>>> a = arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> random.permutation(a)
array([1, 4, 3, 2, 0])
>>> a
array([0, 1, 2, 3, 4])
>>> random.shuffle(a)
>>> a
array([4, 1, 3, 2, 0])

随机种子设置

numpy.random.seed(seed=None)

该函数用于设置随机生成算法的初始种子值,以便复现随机结果。

其他概率分布随机数函数

此外,NumPy还提供其他符合特定概率分布的随机数生成函数:

  • numpy.random.beta
  • numpy.random.binomial
  • numpy.random.chisquare
  • numpy.random.dirichlet
  • numpy.random.exponential
  • numpy.random.f
  • numpy.random.gamma
  • numpy.random.geometric
  • numpy.random.gumbel
  • numpy.random.hypergeometric
  • numpy.random.laplace
  • numpy.random.logistic
  • numpy.random.lognormal
  • numpy.random.logseries
  • numpy.random.multinomial
  • numpy.random.multivariate_normal
  • numpy.random.negative_binomial
  • numpy.random.noncentral_chisquare
  • numpy.random.noncentral_f
  • numpy.random.normal
  • numpy.random.pareto
  • numpy.random.poisson
  • numpy.random.power
  • numpy.random.randn
  • numpy.random.rayleigh
  • numpy.random.standard_cauchy
  • numpy.random.standard_exponential
  • numpy.random.standard_gamma
  • numpy.random.standard_normal
  • numpy.random.standard_t
  • numpy.random.triangular
  • numpy.random.vonmises
  • numpy.random.wald
  • numpy.random.weibull
  • numpy.random.zipf

以上内容为本文的全部介绍,希望能为您的学习提供有益帮助,也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表