Skip to main content

在python中生成专业的伪随机数包。

项目描述

Pure_PRNG

派皮 PyPI - 状态 GitHub 发布日期 语言等级:Python Codacy 徽章 PyPI - 下载 PyPI - Python 版本 PyPI - 许可证

在python中生成专业的伪随机数包。

只实现了具有良好统计特性的伪随机数算法。

有一些“方法”可以指定多精度伪随机序列的周期。

实现的伪随机数生成算法

PRNG 算法 时期
二次同余生成器(QCG) 2^256
三次同余生成器(CCG) 2^256
逆同余生成器(ICG) 102*2^256
PCG64_XSL_RR 2^128
PCG64_DXSM 2^128
LCG64_32_ext 2^128
LCG128Mix_XSL_RR 2^128
LCG128Mix_DXSM 2^128
LCG128Mix_MURMUR3 2^128
飞利浦计数器 4*2^(4*64)
三油炸计数器 4*2^(4*64)
AES计数器 2^128
查查计数器 2^128
SPECK计数器 2^129
XSM64 2^128
EFIIX64 2^64
拆分混合64 2^64
Ran64 2^64

如果任何 PRNG 未能通过新的统计测试,请通知我。

安装

可以通过pip进行安装。你必须有 python 版本 >= 3.8

pip install pure-prng

用法

导入包的语句:

from pure_prng_package import pure_prng

例子:

>>> seed = 170141183460469231731687303715884105727
>>> period = 115792089237316195423570985008687907853269984665640564039457584007913129639747

>>> prng_instance = pure_prng(seed)
>>> source_random_number = prng_instance.source_random_number()
>>> next(source_random_number)
65852230656997158461166665751696465914198450243194923777324019418213544382100

>>> prng_instance = pure_prng(seed, new_prng_period = 2 ** 512)
>>> source_random_number = prng_instance.source_random_number()
>>> next(source_random_number)
8375486648769878807557228126183349922765245383564825377649864304632902242469125910865615742661048315918259479944116325466004411700005484642554244082978452

>>> prng_instance = pure_prng(seed)
>>> rand_bits = prng_instance.rand_bits(512)
>>> next(rand_bits)
mpz(6144768950704661248519702670268583753928668607451020183407159490385670202458730311510261255705698403097105657582435836672179668357656056427608305574891156)
>>> rand_bits = prng_instance.rand_bits(512, period)
>>> next(rand_bits)
mpz(2954964798889411590155032615694646383408546750268072607273800792672971321854983100133610686738061114434885994588970398525439724215184541467422573311905001)

>>> prng_instance = pure_prng(seed)
>>> rand_float = prng_instance.rand_float(100)
>>> next(rand_float)
mpfr('0.56576176351048513846261940831522',100)

>>> prng_instance = pure_prng(seed)
>>> rand_int = prng_instance.rand_int(100, 1)
>>> next(rand_int)
mpz(21)

>>> prng_instance = pure_prng(seed)
>>> get_randint_set = prng_instance.get_randint_set(100, 1, 6)
>>> next(get_randint_set)
{mpz(34), mpz(99), mpz(37), mpz(45), mpz(19), mpz(21)}

>>> prng_instance = pure_prng(seed)
>>> rand_with_period = prng_instance.rand_with_period(period)
>>> next(rand_with_period)
mpz(65852230656997158461166665751696465914198450243194923777324019418213544381986)
>>> rand_with_period = prng_instance.rand_with_period(period, 'raw_binary_number')
>>> next(rand_with_period)
mpz(53067260390396280968027884646874354062063398901623645439544105836818444733296)

未来的工作

旨在实现以下算法:

NLFSR

蜂窝自动化周期伪随机

GPU 飞利浦

项目详情


下载文件

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

源分布

pure_prng-2.9.0.tar.gz (16.8 kB 查看哈希)

已上传 source

内置分布

pure_prng-2.9.0-py3-none-any.whl (32.4 kB 查看哈希)

已上传 py3