# seedrandom
Deterministic seeded RNG
[![Python Version](https://img.shields.io/pypi/pyversions/seedrandom.svg?color=yellow&style=flat-square)](https://www.python.org/downloads/)
[![GitHub Licence](https://img.shields.io/github/license/BananaLoaf/seedrandom.svg?color=blue&style=flat-square)](https://github.com/BananaLoaf/seedrandom/blob/master/LICENSE)
[![Package Version](https://img.shields.io/pypi/v/seedrandom.svg?color=green&style=flat-square)](https://pypi.org/project/seedrandom/)
### Installation / Updating
```
pip install seedrandom
pip install --upgrade seedrandom
```
Or
```
pip install git+https://github.com/BananaLoaf/seedrandom.git
pip install --upgrade git+https://github.com/BananaLoaf/seedrandom.git
```
### Usage
```python
from seedrandom import SeededRNG
rng = SeededRNG(b"Test", b"values", hash_func=hashlib.sha512) # any hash func from hashlib
```
Generating random values:
```python
rng.randint(a=0, b=1000) # 893
rng.randfloat(a=0, b=100, step=0.1) # 89.3
rng.randbool() # False
rng.randbyte() # b'\xbf'
```
```SeededRNG``` can be converted to and from ```int``` or ```bytes```:
```python
bytes(rng)
int(rng)
rng1 = SeededRNG.from_bytes(b'\xbb\x9a\xf3\xe3\x1d\xfcA\xcc\xc5\x93S\x9a\xec:\x9a\x08z\x88\x85\x99\xf7\xea\x91\xb6x\x00\xfb\x82"\xc2$K', hash_func=hashlib.blake2s)
rng2 = SeededRNG.from_int(13391421701272821393603640485300504071883816826531413055648909144818643814535822212998295950921452703111178763035507290455800978052021014498426299707601814, hash_func=hashlib.sha512)
```
```ordered``` parameter can be used:
```python
rng1 = SeededRNG(b"Hello", b"world")
rng2 = SeededRNG(b"world", b"Hello")
rng1 == rng2 # True
rng1 = SeededRNG(ordered=(b"Hello", b"world"))
rng2 = SeededRNG(ordered=(b"world", b"Hello"))
rng1 == rng2 # False
rng1 = SeededRNG(b"Hello", b"world", ordered=(b"spanish", b"inquisition"))
rng2 = SeededRNG(b"world", b"Hello", ordered=(b"spanish", b"inquisition"))
rng1 == rng2 # True
rng1 = SeededRNG(b"Hello", b"world", ordered=(b"spanish", b"inquisition"))
rng2 = SeededRNG(b"Hello", b"world", ordered=(b"inquisition", b"spanish"))
rng1 == rng2 # False
```
Raw data
{
"_id": null,
"home_page": "https://github.com/BananaLoaf/seedrandom",
"name": "seedrandom",
"maintainer": "BananaLoaf",
"docs_url": null,
"requires_python": ">=3.7,<4.0",
"maintainer_email": "bananaloaf@protonmail.com",
"keywords": "random,seed,seeded,number,generator,hash,int,float,bool,bytes,rng,deterministic",
"author": "BananaLoaf",
"author_email": "bananaloaf@protonmail.com",
"download_url": "https://files.pythonhosted.org/packages/9f/45/05b800d1b070b1e805f71e59bcf5865178c6e58aa9d006d0539e373f45a9/seedrandom-2.3.1.tar.gz",
"platform": null,
"description": "# seedrandom\nDeterministic seeded RNG\n\n[![Python Version](https://img.shields.io/pypi/pyversions/seedrandom.svg?color=yellow&style=flat-square)](https://www.python.org/downloads/)\n[![GitHub Licence](https://img.shields.io/github/license/BananaLoaf/seedrandom.svg?color=blue&style=flat-square)](https://github.com/BananaLoaf/seedrandom/blob/master/LICENSE)\n[![Package Version](https://img.shields.io/pypi/v/seedrandom.svg?color=green&style=flat-square)](https://pypi.org/project/seedrandom/)\n\n\n### Installation / Updating\n```\npip install seedrandom\npip install --upgrade seedrandom\n```\nOr\n```\npip install git+https://github.com/BananaLoaf/seedrandom.git\npip install --upgrade git+https://github.com/BananaLoaf/seedrandom.git\n```\n\n### Usage\n\n```python\nfrom seedrandom import SeededRNG\nrng = SeededRNG(b\"Test\", b\"values\", hash_func=hashlib.sha512) # any hash func from hashlib\n```\n\nGenerating random values:\n```python\nrng.randint(a=0, b=1000) # 893\nrng.randfloat(a=0, b=100, step=0.1) # 89.3\nrng.randbool() # False\nrng.randbyte() # b'\\xbf'\n```\n\n```SeededRNG``` can be converted to and from ```int``` or ```bytes```:\n```python\nbytes(rng)\nint(rng)\n\nrng1 = SeededRNG.from_bytes(b'\\xbb\\x9a\\xf3\\xe3\\x1d\\xfcA\\xcc\\xc5\\x93S\\x9a\\xec:\\x9a\\x08z\\x88\\x85\\x99\\xf7\\xea\\x91\\xb6x\\x00\\xfb\\x82\"\\xc2$K', hash_func=hashlib.blake2s)\nrng2 = SeededRNG.from_int(13391421701272821393603640485300504071883816826531413055648909144818643814535822212998295950921452703111178763035507290455800978052021014498426299707601814, hash_func=hashlib.sha512)\n```\n\n```ordered``` parameter can be used:\n```python\nrng1 = SeededRNG(b\"Hello\", b\"world\")\nrng2 = SeededRNG(b\"world\", b\"Hello\")\nrng1 == rng2 # True\n\nrng1 = SeededRNG(ordered=(b\"Hello\", b\"world\"))\nrng2 = SeededRNG(ordered=(b\"world\", b\"Hello\"))\nrng1 == rng2 # False\n\nrng1 = SeededRNG(b\"Hello\", b\"world\", ordered=(b\"spanish\", b\"inquisition\"))\nrng2 = SeededRNG(b\"world\", b\"Hello\", ordered=(b\"spanish\", b\"inquisition\"))\nrng1 == rng2 # True\n\nrng1 = SeededRNG(b\"Hello\", b\"world\", ordered=(b\"spanish\", b\"inquisition\"))\nrng2 = SeededRNG(b\"Hello\", b\"world\", ordered=(b\"inquisition\", b\"spanish\"))\nrng1 == rng2 # False\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Proof-of-concept seeded RNG lib",
"version": "2.3.1",
"project_urls": {
"Homepage": "https://github.com/BananaLoaf/seedrandom",
"Repository": "https://github.com/BananaLoaf/seedrandom"
},
"split_keywords": [
"random",
"seed",
"seeded",
"number",
"generator",
"hash",
"int",
"float",
"bool",
"bytes",
"rng",
"deterministic"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "481e422b52d2c82116f948bbae1715661b58a218dfedac2d0dfc6c5f4da735b8",
"md5": "3db4987465d02cb9a5bf4af6e6bc10e7",
"sha256": "5269632b66c9d7988cd6143a9f53510cd7d9fc06c90aefe92741f68fd0d90d5f"
},
"downloads": -1,
"filename": "seedrandom-2.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3db4987465d02cb9a5bf4af6e6bc10e7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7,<4.0",
"size": 4616,
"upload_time": "2023-09-08T23:58:43",
"upload_time_iso_8601": "2023-09-08T23:58:43.126609Z",
"url": "https://files.pythonhosted.org/packages/48/1e/422b52d2c82116f948bbae1715661b58a218dfedac2d0dfc6c5f4da735b8/seedrandom-2.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f4505b800d1b070b1e805f71e59bcf5865178c6e58aa9d006d0539e373f45a9",
"md5": "7acc20cccbcb6505814a485e5bda6743",
"sha256": "a0f7ca322efe13ce4d3af28c9541b24b1945f63d5040e55479aadb45cad96696"
},
"downloads": -1,
"filename": "seedrandom-2.3.1.tar.gz",
"has_sig": false,
"md5_digest": "7acc20cccbcb6505814a485e5bda6743",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7,<4.0",
"size": 4638,
"upload_time": "2023-09-08T23:58:44",
"upload_time_iso_8601": "2023-09-08T23:58:44.604903Z",
"url": "https://files.pythonhosted.org/packages/9f/45/05b800d1b070b1e805f71e59bcf5865178c6e58aa9d006d0539e373f45a9/seedrandom-2.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-08 23:58:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "BananaLoaf",
"github_project": "seedrandom",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "seedrandom"
}