跳转到主要内容

Python中的快速随机数生成

项目描述

fastrand

在Python中使用PCG在区间内快速生成随机数:比random.randint快10倍。

博客文章: Python中的区间随机数生成很慢

用法...(别忘了在您的shell中输入上面的行!)

import fastrand

print("generate an integer in [0,1001)")
fastrand.pcg32bounded(1001) 
print("generate an integer in [100,1000]")
fastrand.pcg32randint(100,1000) # requires Python 3.7 or better
print("Generate a random 32-bit integer.")
fastrand.pcg32()

if fastrand.SIXTYFOUR: # support for xorshift128+ is limited to some 64-bit platforms (linux, macos, etc.)
    print("generate an integer in [0,1001)")
    fastrand.xorshift128plusbounded(1001) 
    print("generate an integer in [100,1000]")
    fastrand.xorshift128plusrandint(100,1000) # requires Python 3.7 or better
    print("Generate a random 64-bit integer.")
    fastrand.xorshift128plus()

它比其他替代方案快近一个数量级


python3 -m timeit -s 'import fastrand' 'fastrand.pcg32bounded(1001)'
10000000 loops, best of 5: 23.6 nsec per loop

python3 -m timeit -s 'import fastrand' 'fastrand.pcg32randint(100,1000)'
10000000 loops, best of 5: 24.6 nsec per loop

python3 -m timeit -s 'import random' 'random.randint(0,1000)'
1000000 loops, best of 5: 216 nsec per loop

python3 -m timeit -s 'import numpy' 'numpy.random.randint(0, 1000)'
500000 loops, best of 5: 955 nsec per loop

pcg32生成器是一个32位生成器,因此它在0到2**32-1的区间内生成值。xorshift128+生成器是一个64位生成器,因此它可以生成64位范围内的值(高达2**64-1)。

如果您有Linux、macOS或Windows,您应该能够直接使用pip安装...

pip install fastrand

您可能需要root权限(macOS和Linux上的sudo)。

有时安装特定版本很有用,您可以按照以下方式操作;

pip install fastrand==1.2.4

通常,如果您有root权限,可以按以下方式构建库:

python setup.py build
python setup.py install 

或者

python setup.py build
python setup.py install --home=$HOME
export PYTHONPATH=$PYTHONPATH:~/lib/python

更改种子和多个流

  • 您可以使用类似pcg32_seed的函数更改种子。种子决定了您获得的随机值。请注意,原始种子(例如,int(time.time()))可能提供较差的初始随机性。几次pcg32()调用可能有助于提高随机性。或者您可以尝试更好的种子。
  • 如果您需要生成多个随机数流,仅更改种子是不够的。您最好通过调用pcg32inc使用不同的增量。增量应全部不同。请注意,无论您传递什么值,增量最低有效位始终设置为1:因此请确保您的增量是不同的31位值(忽略最低有效位)。
  • 您还可以使用xorshift128plus_seed1和xorshift128plus_seed2初始化xorshift128+。

参考

项目详情


下载文件

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

源分布

fastrand-2.0.1.tar.gz (8.6 kB 查看哈希值)

上传时间

构建分布

fastrand-2.0.1-pp39-pypy39_pp73-win_amd64.whl (13.0 kB 查看哈希值)

上传时间 PyPy Windows x86-64

fastrand-2.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

fastrand-2.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.6 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (9.2 kB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

fastrand-2.0.1-pp38-pypy38_pp73-win_amd64.whl (13.0 kB 查看哈希值)

上传时间 PyPy Windows x86-64

fastrand-2.0.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

fastrand-2.0.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.6 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (9.2 kB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

fastrand-2.0.1-pp37-pypy37_pp73-win_amd64.whl (13.0 kB 查看哈希值)

上传时间 PyPy Windows x86-64

fastrand-2.0.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

fastrand-2.0.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.7 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (9.2 kB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

fastrand-2.0.1-cp311-cp311-win_amd64.whl (12.9 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

fastrand-2.0.1-cp311-cp311-win32.whl (12.6 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86

fastrand-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl (24.0 kB 查看哈希值)

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

fastrand-2.0.1-cp311-cp311-musllinux_1_1_i686.whl (24.6 kB 查看哈希值)

上传时间 CPython 3.11 musllinux: musl 1.1+ i686

fastrand-2.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.7 kB 查看哈希值)

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

fastrand-2.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (19.2 kB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp311-cp311-macosx_11_0_arm64.whl (9.9 kB 查看哈希值)

上传时间: CPython 3.11 macOS 11.0+ ARM64

fastrand-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl (9.4 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.9+ x86-64

fastrand-2.0.1-cp311-cp311-macosx_10_9_universal2.whl (12.0 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

fastrand-2.0.1-cp310-cp310-win_amd64.whl (13.0 kB 查看哈希值)

上传时间: CPython 3.10 Windows x86-64

fastrand-2.0.1-cp310-cp310-win32.whl (12.6 kB 查看哈希值)

上传时间: CPython 3.10 Windows x86

fastrand-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl (23.2 kB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.1+ x86-64

fastrand-2.0.1-cp310-cp310-musllinux_1_1_i686.whl (23.8 kB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.1+ i686

fastrand-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.7 kB 查看哈希值)

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

fastrand-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (19.2 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp310-cp310-macosx_11_0_arm64.whl (9.9 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

fastrand-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl (9.4 kB 查看哈希值)

上传时间 CPython 3.10 macOS 10.9+ x86-64

fastrand-2.0.1-cp310-cp310-macosx_10_9_universal2.whl (12.0 kB 查看哈希值)

上传时间 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

fastrand-2.0.1-cp39-cp39-win_amd64.whl (13.0 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

fastrand-2.0.1-cp39-cp39-win32.whl (12.6 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86

fastrand-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl (22.9 kB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ x86-64

fastrand-2.0.1-cp39-cp39-musllinux_1_1_i686.whl (23.4 kB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ i686

fastrand-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.4 kB 查看哈希值)

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

fastrand-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (18.9 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp39-cp39-macosx_11_0_arm64.whl (9.9 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

fastrand-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl (9.4 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

fastrand-2.0.1-cp39-cp39-macosx_10_9_universal2.whl (12.0 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

fastrand-2.0.1-cp38-cp38-win_amd64.whl (13.0 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

fastrand-2.0.1-cp38-cp38-win32.whl (12.6 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

fastrand-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl (23.1 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

fastrand-2.0.1-cp38-cp38-musllinux_1_1_i686.whl (23.7 kB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ i686

fastrand-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.9 kB 查看哈希值)

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

fastrand-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (19.5 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp38-cp38-macosx_11_0_arm64.whl (9.9 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

fastrand-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl (9.4 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

fastrand-2.0.1-cp38-cp38-macosx_10_9_universal2.whl (12.0 kB 查看哈希)

上传于 CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

fastrand-2.0.1-cp37-cp37m-win_amd64.whl (13.0 kB 查看哈希)

上传于 CPython 3.7m Windows x86-64

fastrand-2.0.1-cp37-cp37m-win32.whl (12.6 kB 查看哈希)

上传于 CPython 3.7m Windows x86

fastrand-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl (24.0 kB 查看哈希)

上传于 CPython 3.7m musllinux: musl 1.1+ x86-64

fastrand-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl (24.4 kB 查看哈希)

上传于 CPython 3.7m musllinux: musl 1.1+ i686

fastrand-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.7 kB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

fastrand-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (19.2 kB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl (9.4 kB 查看哈希)

上传于 CPython 3.7m macOS 10.9+ x86-64

fastrand-2.0.1-cp36-cp36m-win_amd64.whl (13.0 kB 查看哈希)

上传于 CPython 3.6m Windows x86-64

fastrand-2.0.1-cp36-cp36m-win32.whl (12.7 kB 查看哈希)

上传于 CPython 3.6m Windows x86

fastrand-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl (22.0 kB 查看哈希值)

上传于 CPython 3.6m musllinux: musl 1.1+ x86-64

fastrand-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl (22.3 kB 查看哈希值)

上传于 CPython 3.6m musllinux: musl 1.1+ i686

fastrand-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.8 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

fastrand-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (18.0 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

fastrand-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl (9.1 kB 查看哈希值)

上传于 CPython 3.6m macOS 10.9+ x86-64

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面