概述
文章
- 基础篇
- 进阶篇
- 其他篇
用户指南
NumPy 参考手册
- 数组对象
- 常量
- 通函数(ufunc)
- 常用 API
- 创建数组
- 数组处理程序
- 二进制运算
- 字符串操作
- C-Types 外部函数接口(numpy.ctypeslib)
- 时间日期相关
- 数据类型相关
- 可选的 Scipy 加速支持(numpy.dual)
- 具有自动域的数学函数( numpy.emath)
- 浮点错误处理
- 离散傅立叶变换(numpy.fft)
- 财金相关
- 实用的功能
- 特殊的 NumPy 帮助功能
- 索引相关
- 输入和输出
- 线性代数(numpy.linalg)
- 逻辑函数
- 操作掩码数组
- 数学函数(Mathematical functions)
- 矩阵库 (numpy.matlib)
- 杂项(Miscellaneous routines)
- 填充数组(Padding Arrays)
- 多项式(Polynomials)
- 随机抽样 (numpy.random)
- 操作集合(Set routines)
- 排序,搜索和计数(Sorting, searching, and counting)
- Statistics
- Test Support (numpy.testing)
- Window functions
- 打包(numpy.distutils)
- NumPy Distutils 用户指南
- NumPy C-API
- NumPy 的内部
- NumPy 和 SWIG
其他文档
随机抽样 (numpy.random)
Numpy的随机数例程使用 BitGenerator 和 Generator
的组合来生成伪随机数以创建序列,并使用这些序列从不同的统计分布中进行采样:
- BitGenerators:生成随机数的对象。这些通常是填充有32或64随机位序列的无符号整数字。
- 生成器:将来自BitGenerator的随机位序列转换为在指定间隔内遵循特定概率分布(如均匀、正态或二项式)的数字序列的对象。
从Numpy版本1.17.0开始,Generator可以使用许多不同的BitGenerator进行初始化。它暴露了许多不同的概率分布。有关更新的随机Numpy数例程的上下文,请参见NEP 19open in new window。遗留的 RandomState
随机数例程仍然可用,但仅限于单个BitGenerator。
为了方便和向后兼容,单个RandomState
实例的方法被导入到numpy.Random命名空间中,有关完整列表,请参阅遗留随机生成。
快速开始
默认情况下,Generator使用PCG64提供的位, 具有比传统mt19937 RandomState
中的随机数字生成器更好的统计属性
# Uses the old numpy.random.RandomState
from numpy import random
random.standard_normal()
尽管随机值是由PCG64
open in new window生成的,但是Generator
open in new window可以直接替代RandomState。 Generator
open in new window包含一个BitGenerator的实例。 可以通过gen.bit_generator来访问。
# As replacement for RandomState(); default_rng() instantiates Generator with
# the default PCG64 BitGenerator.
from numpy.random import default_rng
rg = default_rng()
rg.standard_normal()
rg.bit_generator
Seeds可以传递给任何BitGenerator。 所提供的值通过SeedSequence
open in new window进行混合,以将可能的seeds序列分布在BitGenerator的更广泛的初始化状态中。 这里使用PCG64
open in new window并用Generator
open in new window包裹。
from numpy.random import Generator, PCG64
rg = Generator(PCG64(12345))
rg.standard_normal()
介绍(Introduction
)
新的基础架构采用了不同的方法来产生随机数 来自RandomState
对象。 随机数生成分为两个组件,一个bit generator
和一个random generator
。
BitGenerator具有有限的职责集。 它管理状态并提供产生随机双精度和随机无符号32位和64位值。
random generator
将bit generator提供的流并将其转换为更有用的分布,例如模拟的正常随机值。 这种结构允许备用bit generator,几乎不需要代码重复。
Generator
是面向用户的对象,几乎与 RandomState
相同。 初始化生成器的规范方法通过PCG64
bit generator作为唯一的参数。
from numpy.random import default_rng
rg = default_rng(12345)
rg.random()
也可以使用 BitGenerator 实例直接实例化Generator
。 要使用较旧的MT19937
算法,可以直接实例化它 并将其传递给Generator
from numpy.random import Generator, MT19937
rg = Generator(MT19937(12345))
rg.random()
What’s New or Different
Warning
The Box-Muller method used to produce NumPy’s normals is no longer available in Generator
. It is not possible to reproduce the exact random values using Generator for the normal distribution or any other distribution that relies on the normal such as the RandomState.gamma
open in new window or RandomState.standard_t
open in new window. If you require bitwise backward compatible streams, use RandomState
.
- The Generator’s normal, exponential and gamma functions use 256-step Ziggurat methods which are 2-10 times faster than NumPy’s Box-Muller or inverse CDF implementations.
- Optional
dtype
argument that acceptsnp.float32
ornp.float64
to produce either single or double prevision uniform random variables for select distributions - Optional
out
argument that allows existing arrays to be filled for select distributions random_entropy
provides access to the system source of randomness that is used in cryptographic applications (e.g.,/dev/urandom
on Unix).- All BitGenerators can produce doubles, uint64s and uint32s via CTypes (
ctypes
) and CFFI (cffi
). This allows the bit generators to be used in numba. - The bit generators can be used in downstream projects via Cython.
integers
open in new window is now the canonical way to generate integer random numbers from a discrete uniform distribution. Therand
andrandn
methods are only available through the legacyRandomState
. Theendpoint
keyword can be used to specify open or closed intervals. This replaces bothrandint
and the deprecatedrandom_integers
.random
open in new window is now the canonical way to generate floating-point random numbers, which replacesRandomState.random_sample
open in new window, RandomState.sample, and RandomState.ranf. This is consistent with Python’srandom.random
open in new window.- All BitGenerators in numpy use
SeedSequence
to convert seeds into initialized states.
See What’s New or Different for a complete list of improvements and differences from the traditional Randomstate
.
Parallel Generation
The included generators can be used in parallel, distributed applications in one of three ways:
Concepts
Features
- Parallel Applicationsopen in new window
- Multithreaded Generationopen in new window
- What’s New or Differentopen in new window
- Comparing Performanceopen in new window
- Extendingopen in new window
- Reading System Entropyopen in new window
Original Source
This package was developed independently of NumPy and was integrated in version 1.17.0. The original repo is at https://github.com/bashtage/randomgenopen in new window.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论