跳转到主要内容

支持多个伪随机数生成器的随机生成器

项目描述

RandomGen

此软件包包含为NumPy的GeneratorExtendedGenerator提供额外位生成器的包,后者公开了不在Generator中的方法。

持续集成

Azure Build Status Cirrus CI Build Status Github Workflow Build Status

覆盖率

codecov

最新版本

PyPI version Anacnoda Cloud

许可证

NCSA License BSD License DOI

这是一个Python和NumPy中替代随机生成器的库和通用接口。

新功能

有关最新功能的开发文档或有关最新发布功能的稳定文档

警告

v1.24版本中的变更

在1.23.0版本中,已移除GeneratorRandomState

1.18到1.19的更改

GeneratorRandomState已在1.19版本中正式弃用,并且在移除时会发出FutureWarning。它们也将几乎不再得到维护。现在是时候转移到NumPy的np.random.Generator了,它具有randomstate.Generator中不存在的功能,并且维护得更加活跃。

一些不在np.random.Generator中存在的分布已被移动到randomstate.ExtendedGenerator

  • multivariate_normal:支持广播
  • uintegers:快速的32位和64位均匀整数
  • complex_normal:标量复数正态分布

没有计划移除任何位生成器,例如AESCounterThreeFryPCG64

1.16到1.18的更改

在v1.16.x和v1.18.x之间有许多更改。这些更改反映了与NumPy一起在准备将randomgen的核心用作NumPy首选随机数生成器时做出的API决策。除了BasicRNG.generator(它引发NotImplementedError)之外,所有这些都会发出DeprecationWarning。C-API也已更改,以反映首选的底层伪随机数生成器的命名,这些生成器现在被称为位生成器(或BigGenerator)。

未来计划

  • 添加一些NumPy不支持的分位数。 进行中
  • 添加任何我遇到的有趣的位生成器。 最近添加的包括PCG64的DXSM和CM-DXSM变体以及LXM生成器。

包含的伪随机数生成器

本模块除了包含NumPy中包含的MT19937之外,还包括其他一些替代随机数生成器。这些RNG包括

  • 基于AES、ChaCha20、HC128和Speck128的加密密钥随机数生成器。
  • MT19937,NumPy rng
  • dSFMT,MT19937生成器的SSE2感知版本,在生成双精度数时特别快速
  • xoroshiro128+xorshift1024*φxoshiro256**xoshiro512**
  • PCG64
  • 来自Random123的ThreeFry和Philox
  • 其他基于加密的生成器:AESCounterSPECK128ChaChaHC128
  • 在AMD64上使用RDRAND的硬件(不可重现)随机数生成器。
  • 混沌PRNGS:Small-Fast Chaotic (SFC64)和Jenkin's Small-Fast (JSF)。

状态

  • 在以下环境中构建并通过所有测试
    • Linux 32/64位,Python 3.7,3.8,3.9,3.10
    • Linux (ARM/ARM64),Python 3.8
    • OSX 64位,Python 3.9
    • Windows 32/64位,Python 3.7,3.8,3.9,3.10
    • FreeBSD 64位

版本

软件包版本与软件包发布时的最新NumPy版本相匹配。

文档

最新发布版本的文档可在我的GitHub页面上找到。最新提交(未发布)的文档可在devel下找到。

需求

构建需要

  • Python (3.9,3.10,3.11,3.12,3.13)
  • NumPy (1.22.3+,运行时,2.0.0+,构建)
  • Cython (3.0.10+)

测试需要pytest (7+).

注意:它可能与其他版本一起工作,但仅对这些版本进行了测试。

开发和测试

所有开发都在64位Linux上进行,并且它定期在Azure(Linux-AMD64、Windows和OSX)和Cirrus(FreeBSD和Linux-ARM)上测试。

为所有RNG提供了测试。MT19937与NumPy的实现进行了测试,以确保结果相同。它还通过了NumPy的测试套件中仍然相关的测试。

安装

可以使用以下方式从PyPi安装

python -m pip install randomgen

或者,如果您想要最新版本,

python -m pip install git+https://github.com/bashtage/randomgen.git

或者从克隆的仓库中安装,

python -m pip install .

如果您使用conda,您可以使用conda forge安装

conda install -c conda-forge randomgen

SSE2

dSFTM 默认使用 SSE2。如果您拥有非常老的计算机或者在非-x86平台上构建,可以使用以下方法进行安装:

export RANDOMGEN_NO_SSE2=1
python -m pip install . 

Windows

可以选择使用二进制安装程序,或者从头开始构建,使用 Python 3.6/3.7 和 Visual Studio 2015 Build Toolx。

许可证

双许可:BSD 3-Clause 和 NCSA,以及组件的子许可证。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

randomgen-2.1.1.tar.gz (1.5 MB 查看哈希值)

上传时间

构建版本

randomgen-2.1.1-cp313-cp313-win_amd64.whl (6.7 MB 查看哈希值)

上传时间 CPython 3.13 Windows x86-64

randomgen-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.13 musllinux: musl 1.2+ x86-64

randomgen-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ x86-64

randomgen-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.5 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ ARM64

randomgen-2.1.1-cp313-cp313-macosx_11_0_arm64.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.13 macOS 11.0+ ARM64

randomgen-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl (3.4 MB 查看哈希值)

上传时间 CPython 3.13 macOS 10.13+ x86-64

randomgen-2.1.1-cp312-cp312-win_amd64.whl (6.7 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

randomgen-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ x86-64

randomgen-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

randomgen-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

randomgen-2.1.1-cp312-cp312-macosx_11_0_arm64.whl (3.4 MB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

randomgen-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl (3.5 MB 查看哈希值)

上传时间 CPython 3.12 macOS 10.13+ x86-64

randomgen-2.1.1-cp311-cp311-win_amd64.whl (6.7 MB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

randomgen-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (3.8 MB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.2+ x86-64

randomgen-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

randomgen-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

randomgen-2.1.1-cp311-cp311-macosx_11_0_arm64.whl (3.4 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

randomgen-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl (3.5 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ x86-64

randomgen-2.1.1-cp310-cp310-win_amd64.whl (6.7 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

randomgen-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (3.8 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

randomgen-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

randomgen-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

randomgen-2.1.1-cp310-cp310-macosx_11_0_arm64.whl (3.4 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

randomgen-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl (3.5 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

randomgen-2.1.1-cp39-cp39-win_amd64.whl (6.7 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

randomgen-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

randomgen-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

randomgen-2.1.1-cp39-cp39-macosx_11_0_arm64.whl (3.4 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

randomgen-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl (3.5 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

由以下支持