| Name | mrg32k3a-numba JSON |
| Version |
1.0.0
JSON |
| download |
| home_page | None |
| Summary | An accelerated version of the MRG32k3a generator using Numba for high-performance operations. |
| upload_time | 2025-07-12 13:20:07 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.8 |
| license | MIT License
Copyright (c) 2025 simulation-optimization
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. |
| keywords |
random number generator
rng
mrg32k3a
numba
simulation
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
[**Main Page**](../README.md) | [**How to Use PyPRS**](How%20to%20Use%20PyPRS.md) ([**MRG32k3a_numba**](MRG32k3a_numba.md))| [**Output**](Output.md) | [**A Demo Application**](A%20Demo%20Application.md) |
# MRG32k3a_numba Package
The `mrg32k3a_numba` package provides a Python implementation of the MRG32k3a random number generator, designed to be compatible with Numba-accelerated functions. The MRG32k3a, introduced by L’Ecuyer (1999) and L’Ecuyer et al. (2002)., is a high-quality random number generator with an exceptionally long period of approximately $2^{191}$ and has been rigorously tested for statistical robustness. This implementation builds on the work of Eckman et al. (2023) and addresses the limitation of the original MRG32k3a implementation, which was not compatible with Numba, a just-in-time compiler that optimizes Python code for numerical computations by translating it into machine code.
The period of the MRG32k3a random number generator is structured hierarchically:
- **Streams**: $2^{50}$ streams, each with a length of $2^{141}$.
- **Substreams**: Each stream contains $2^{47}$ substreams, each with a length of $2^{94}$.
- **Subsubstreams**: Each substream contains $2^{47}$ subsubstreams, each with a length of $2^{47}$.
## Installation
To install the `mrg32k3a_numba` package, run the following command in the terminal or command prompt:
```bash
python -m pip install mrg32k3a_numba
```
## Initializing an Instance
To use the random number generator, create an instance of the `MRG32k3a_numba` class and seed it with a NumPy array of three non-negative integers `[s, ss, sss]`, where:
- `s`: The index of the stream.
- `ss`: The index of the substream within the chosen stream.
- `sss`: The index of the subsubstream within the chosen substream.
## Example Usage
Below is an example of how to initialize an instance of the `MRG32k3a_numba` class and generate random numbers:
```python
import numpy as np
from mrg32k3a_numba import MRG32k3a_numba
# Initialize the RNG with stream=0, substream=1, subsubstream=2
rng = MRG32k3a_numba(np.array([0, 1, 2]))
# Generate a single random number (uniformly distributed in (0,1)
random_number = rng.random()
print(f"Random Number: {random_number}")
# Example Output: Random Number: 0.17526146151460337
uniform_number = rng.uniform(10.0, 20.0)
print(f"Uniform Distribution on [10, 20): {uniform_number}")
# Example Output: Uniform Distribution on [10, 20): 17.243388997536364
normal_variate = rng.normalvariate(0.0, 1.0)
print(f"Normal Distribution (mean=0.0, std_dev=1.0): {normal_variate}")
# Example Output: Normal Distribution (mean=0.0, std_dev=1.0): -0.32298573768826494
expo_variate = rng.expovariate(0.5)
print(f"Exponential Distribution (lambda=0.5): {expo_variate}")
# Example Output: Exponential Distribution (lambda=0.5): 1.3471538273911559
lognormal_variate = rng.lognormalvariate(0.0, 0.25)
print(f"Lognormal Distribution (underlying mean=0.0, underlying std_dev=0.25): {lognormal_variate}")
# Example Output: Lognormal Distribution (underlying mean=0.0, underlying std_dev=0.25): 1.2975791204572622
triangular_variate = rng.triangular(100.0, 200.0, 160.0)
print(f"Triangular Distribution (range=[100.0, 200.0], mode=160.0): {triangular_variate}")
# Example Output: Triangular Distribution (range=[100.0, 200.0], mode=160.0): 135.3251178752223
gamma_variate = rng.gammavariate(9.0, 2.0)
print(f"Gamma Distribution (shape α=9.0, scale β=2.0): {gamma_variate}")
# Example Output: Gamma Distribution (shape α=9.0, scale β=2.0): 24.983786084540256
beta_variate = rng.betavariate(5.0, 10.0)
print(f"Beta Distribution (α=5.0, β=10.0): {beta_variate}")
# Example Output: Beta Distribution (α=5.0, β=10.0): 0.4138795474882314
weibull_variate = rng.weibullvariate(1.0, 1.5)
print(f"Weibull Distribution (scale α=1.0, shape β=1.5): {weibull_variate}")
# Example Output: Weibull Distribution (scale α=1.0, shape β=1.5): 1.1890835026462618
pareto_variate = rng.paretovariate(2.5)
print(f"Pareto Distribution (shape α={2.5}): {pareto_variate}")
# Example Output: Pareto Distribution (shape α=2.5): 1.6104763097737471
poisson_variate = rng.poissonvariate(3.5)
print(f"Poisson Distribution (expected λ=3.5): {poisson_variate}")
# Example Output: Poisson Distribution (expected λ=10.0): 3
gumbel_variate = rng.gumbelvariate(0.5, 2.0)
print(f"Gumbel Distribution (location μ=0.5, scale β=2.0): {gumbel_variate}")
# Example Output: Gumbel Distribution (location μ=0.5, scale β=2.0): 3.7308608595873745
binomial_variate = rng.binomialvariate(100, 0.25)
print(f"Binomial Distribution (trials n=100, probability p=0.25): {binomial_variate}")
# Example Output: Binomial Distribution (trials n=100, probability p=0.25): 36
mean_vector = np.array([0.0, 5.0])
covariance_matrix = np.array([[1.0, 0.4], [0.4, 1.0]])
mvnormal_vector = rng.mvnormalvariate(mean_vector, covariance_matrix)
print(f"Multivariate Normal Vector (mean={mean_vector}, covariance=\n{covariance_matrix}): \n{mvnormal_vector}")
# Example Output:
# Multivariate Normal Vector (mean=[0. 5.], covariance=
# [[1. 0.8]
# [0.8 1. ]]):
# [0.28548717 5.8516565]
rng = MRG32k3a_numba(np.array([0, 1, 2]))
simplex_vec_exact = rng.continuous_random_vector_from_simplex(4, 100.0, True)
print(f"Random Vector from Simplex (elements=4, exact sum=100.0):")
print(simplex_vec_exact)
print(f"Actual sum: {np.sum(simplex_vec_exact)}")
# Example Output:
# Random Vector from Simplex (elements=4, exact sum=100.0):
# [ 7.3792011 37.47239331 43.14995325 11.99845234]
# Actual sum: 100.0
```
## Key Methods
The `MRG32k3a_numba` class provides the following key methods:
* `random()`: Generates a standard uniformly distributed random floating-point number in the range (0.0, 1.0).
* `uniform(a, b)`: Generates a uniformly distributed random floating-point number in the range `[a, b)`. The parameter `a` is the lower bound and `b` is the upper bound.
* `normalvariate(mu, sigma)`: Generates a random number from the normal (Gaussian) distribution. The parameter `mu` is the mean and `sigma` is the standard deviation. `gauss(mu, sigma)` is an alias for this method.
* `expovariate(lmbda)`: Generates a random number from the exponential distribution. The parameter `lmbda` is the rate parameter (λ), which is `1.0 / mean`.
* `lognormalvariate(mu, sigma)`: Generates a random number from a log-normal distribution. The logarithm of the result, `log(X)`, follows a normal distribution with mean `mu` and standard deviation `sigma`.
* `triangular(low, high, mode)`: Generates a random number from a triangular distribution. The parameters are the lower bound `low`, upper bound `high`, and peak value `mode`.
* `gammavariate(alpha, beta)`: Generates a random number from the gamma distribution. The parameter `alpha` is the shape parameter (k) and `beta` is the scale parameter (θ).
* `betavariate(alpha, beta)`: Generates a random number from the beta distribution, with a value between 0 and 1. Both `alpha` and `beta` are shape parameters.
* `weibullvariate(alpha, beta)`: Generates a random number from the Weibull distribution. The parameter `alpha` is the scale parameter (λ) and `beta` is the shape parameter (k).
* `paretovariate(alpha)`: Generates a random number from the Pareto Type I distribution. The parameter `alpha` is the shape parameter.
* `poissonvariate(lmbda)`: Generates a random integer from the Poisson distribution. The parameter `lmbda` is the expected rate of occurrence (λ).
* `gumbelvariate(mu, beta)`: Generates a random number from the Gumbel distribution. The parameter `mu` is the location parameter and `beta` is the scale parameter.
* `binomialvariate(n, p)`: Generates a random integer from the binomial distribution. The parameter `n` is the number of trials and `p` is the probability of success for each trial.
* `mvnormalvariate(mean_vec, cov)`: Generates a random vector from a multivariate normal distribution. The parameter `mean_vec` is the mean vector (1D array) and `cov` is the covariance matrix (2D array).
* `continuous_random_vector_from_simplex(n_elements, summation, exact_sum)`: Generates a vector of non-negative real numbers whose elements sum to a specific value. The parameter `n_elements` is the number of vector elements, `summation` is the target sum, and `exact_sum` (boolean) determines if the sum is exact or less-than-or-equal-to the target.
## References
- Eckman DJ, Henderson SG, Shashaani S (2023) SimOpt: A testbed for simulation-optimization experiments. INFORMS Journal on Computing 35(2):495–508.
- L’Ecuyer P (1999) Good parameters and implementations for combined multiple recursive random number generators. Operations Research 47(1):159–164.
- L’Ecuyer P, Simard R, Chen EJ, Kelton WD (2002) An object-oriented random-number package with many long streams and substreams. Operations Research 50(6):1073–1075.
Raw data
{
"_id": null,
"home_page": null,
"name": "mrg32k3a-numba",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "random number generator, rng, mrg32k3a, numba, simulation",
"author": null,
"author_email": "Song Huang <23b910018@stu.hit.edu.cn>, Guangxin Jiang <gxjiang@hit.edu.cn>, Ying Zhong <yzhong4@uestc.edu.cn>",
"download_url": "https://files.pythonhosted.org/packages/f9/0f/7cc9c0a2b9b5840d2483e323a9877d876ce38a1c7c77f1790aa35097f04d/mrg32k3a_numba-1.0.0.tar.gz",
"platform": null,
"description": "[**Main Page**](../README.md) | [**How to Use PyPRS**](How%20to%20Use%20PyPRS.md) ([**MRG32k3a_numba**](MRG32k3a_numba.md))| [**Output**](Output.md) | [**A Demo Application**](A%20Demo%20Application.md) |\r\n\r\n# MRG32k3a_numba Package\r\n\r\nThe `mrg32k3a_numba` package provides a Python implementation of the MRG32k3a random number generator, designed to be compatible with Numba-accelerated functions. The MRG32k3a, introduced by L\u2019Ecuyer (1999) and L\u2019Ecuyer et al. (2002)., is a high-quality random number generator with an exceptionally long period of approximately $2^{191}$ and has been rigorously tested for statistical robustness. This implementation builds on the work of Eckman et al. (2023) and addresses the limitation of the original MRG32k3a implementation, which was not compatible with Numba, a just-in-time compiler that optimizes Python code for numerical computations by translating it into machine code.\r\n\r\nThe period of the MRG32k3a random number generator is structured hierarchically:\r\n- **Streams**: $2^{50}$ streams, each with a length of $2^{141}$.\r\n- **Substreams**: Each stream contains $2^{47}$ substreams, each with a length of $2^{94}$.\r\n- **Subsubstreams**: Each substream contains $2^{47}$ subsubstreams, each with a length of $2^{47}$.\r\n\r\n## Installation\r\nTo install the `mrg32k3a_numba` package, run the following command in the terminal or command prompt:\r\n```bash\r\npython -m pip install mrg32k3a_numba\r\n```\r\n## Initializing an Instance\r\nTo use the random number generator, create an instance of the `MRG32k3a_numba` class and seed it with a NumPy array of three non-negative integers `[s, ss, sss]`, where:\r\n- `s`: The index of the stream.\r\n- `ss`: The index of the substream within the chosen stream.\r\n- `sss`: The index of the subsubstream within the chosen substream.\r\n\r\n## Example Usage\r\nBelow is an example of how to initialize an instance of the `MRG32k3a_numba` class and generate random numbers:\r\n```python\r\nimport numpy as np\r\nfrom mrg32k3a_numba import MRG32k3a_numba\r\n# Initialize the RNG with stream=0, substream=1, subsubstream=2\r\nrng = MRG32k3a_numba(np.array([0, 1, 2]))\r\n\r\n# Generate a single random number (uniformly distributed in (0,1)\r\nrandom_number = rng.random()\r\nprint(f\"Random Number: {random_number}\")\r\n# Example Output: Random Number: 0.17526146151460337\r\n\r\nuniform_number = rng.uniform(10.0, 20.0)\r\nprint(f\"Uniform Distribution on [10, 20): {uniform_number}\")\r\n# Example Output: Uniform Distribution on [10, 20): 17.243388997536364\r\n\r\nnormal_variate = rng.normalvariate(0.0, 1.0)\r\nprint(f\"Normal Distribution (mean=0.0, std_dev=1.0): {normal_variate}\")\r\n# Example Output: Normal Distribution (mean=0.0, std_dev=1.0): -0.32298573768826494\r\n\r\nexpo_variate = rng.expovariate(0.5)\r\nprint(f\"Exponential Distribution (lambda=0.5): {expo_variate}\")\r\n# Example Output: Exponential Distribution (lambda=0.5): 1.3471538273911559\r\n\r\nlognormal_variate = rng.lognormalvariate(0.0, 0.25)\r\nprint(f\"Lognormal Distribution (underlying mean=0.0, underlying std_dev=0.25): {lognormal_variate}\")\r\n# Example Output: Lognormal Distribution (underlying mean=0.0, underlying std_dev=0.25): 1.2975791204572622\r\n\r\ntriangular_variate = rng.triangular(100.0, 200.0, 160.0)\r\nprint(f\"Triangular Distribution (range=[100.0, 200.0], mode=160.0): {triangular_variate}\")\r\n# Example Output: Triangular Distribution (range=[100.0, 200.0], mode=160.0): 135.3251178752223\r\n\r\ngamma_variate = rng.gammavariate(9.0, 2.0)\r\nprint(f\"Gamma Distribution (shape \u03b1=9.0, scale \u03b2=2.0): {gamma_variate}\")\r\n# Example Output: Gamma Distribution (shape \u03b1=9.0, scale \u03b2=2.0): 24.983786084540256\r\n\r\nbeta_variate = rng.betavariate(5.0, 10.0)\r\nprint(f\"Beta Distribution (\u03b1=5.0, \u03b2=10.0): {beta_variate}\")\r\n# Example Output: Beta Distribution (\u03b1=5.0, \u03b2=10.0): 0.4138795474882314\r\n\r\nweibull_variate = rng.weibullvariate(1.0, 1.5)\r\nprint(f\"Weibull Distribution (scale \u03b1=1.0, shape \u03b2=1.5): {weibull_variate}\")\r\n# Example Output: Weibull Distribution (scale \u03b1=1.0, shape \u03b2=1.5): 1.1890835026462618\r\n\r\npareto_variate = rng.paretovariate(2.5)\r\nprint(f\"Pareto Distribution (shape \u03b1={2.5}): {pareto_variate}\")\r\n# Example Output: Pareto Distribution (shape \u03b1=2.5): 1.6104763097737471\r\n\r\npoisson_variate = rng.poissonvariate(3.5)\r\nprint(f\"Poisson Distribution (expected \u03bb=3.5): {poisson_variate}\")\r\n# Example Output: Poisson Distribution (expected \u03bb=10.0): 3\r\n\r\ngumbel_variate = rng.gumbelvariate(0.5, 2.0)\r\nprint(f\"Gumbel Distribution (location \u03bc=0.5, scale \u03b2=2.0): {gumbel_variate}\")\r\n# Example Output: Gumbel Distribution (location \u03bc=0.5, scale \u03b2=2.0): 3.7308608595873745\r\n\r\nbinomial_variate = rng.binomialvariate(100, 0.25)\r\nprint(f\"Binomial Distribution (trials n=100, probability p=0.25): {binomial_variate}\")\r\n# Example Output: Binomial Distribution (trials n=100, probability p=0.25): 36\r\n\r\nmean_vector = np.array([0.0, 5.0])\r\ncovariance_matrix = np.array([[1.0, 0.4], [0.4, 1.0]])\r\nmvnormal_vector = rng.mvnormalvariate(mean_vector, covariance_matrix)\r\nprint(f\"Multivariate Normal Vector (mean={mean_vector}, covariance=\\n{covariance_matrix}): \\n{mvnormal_vector}\")\r\n# Example Output:\r\n# Multivariate Normal Vector (mean=[0. 5.], covariance=\r\n# [[1. 0.8]\r\n# [0.8 1. ]]):\r\n# [0.28548717 5.8516565]\r\n\r\nrng = MRG32k3a_numba(np.array([0, 1, 2]))\r\nsimplex_vec_exact = rng.continuous_random_vector_from_simplex(4, 100.0, True)\r\nprint(f\"Random Vector from Simplex (elements=4, exact sum=100.0):\")\r\nprint(simplex_vec_exact)\r\nprint(f\"Actual sum: {np.sum(simplex_vec_exact)}\")\r\n# Example Output:\r\n# Random Vector from Simplex (elements=4, exact sum=100.0):\r\n# [ 7.3792011 37.47239331 43.14995325 11.99845234]\r\n# Actual sum: 100.0\r\n```\r\n\r\n## Key Methods\r\nThe `MRG32k3a_numba` class provides the following key methods:\r\n* `random()`: Generates a standard uniformly distributed random floating-point number in the range (0.0, 1.0).\r\n* `uniform(a, b)`: Generates a uniformly distributed random floating-point number in the range `[a, b)`. The parameter `a` is the lower bound and `b` is the upper bound.\r\n* `normalvariate(mu, sigma)`: Generates a random number from the normal (Gaussian) distribution. The parameter `mu` is the mean and `sigma` is the standard deviation. `gauss(mu, sigma)` is an alias for this method.\r\n* `expovariate(lmbda)`: Generates a random number from the exponential distribution. The parameter `lmbda` is the rate parameter (\u03bb), which is `1.0 / mean`.\r\n* `lognormalvariate(mu, sigma)`: Generates a random number from a log-normal distribution. The logarithm of the result, `log(X)`, follows a normal distribution with mean `mu` and standard deviation `sigma`.\r\n* `triangular(low, high, mode)`: Generates a random number from a triangular distribution. The parameters are the lower bound `low`, upper bound `high`, and peak value `mode`.\r\n* `gammavariate(alpha, beta)`: Generates a random number from the gamma distribution. The parameter `alpha` is the shape parameter (k) and `beta` is the scale parameter (\u03b8).\r\n* `betavariate(alpha, beta)`: Generates a random number from the beta distribution, with a value between 0 and 1. Both `alpha` and `beta` are shape parameters.\r\n* `weibullvariate(alpha, beta)`: Generates a random number from the Weibull distribution. The parameter `alpha` is the scale parameter (\u03bb) and `beta` is the shape parameter (k).\r\n* `paretovariate(alpha)`: Generates a random number from the Pareto Type I distribution. The parameter `alpha` is the shape parameter.\r\n* `poissonvariate(lmbda)`: Generates a random integer from the Poisson distribution. The parameter `lmbda` is the expected rate of occurrence (\u03bb).\r\n* `gumbelvariate(mu, beta)`: Generates a random number from the Gumbel distribution. The parameter `mu` is the location parameter and `beta` is the scale parameter.\r\n* `binomialvariate(n, p)`: Generates a random integer from the binomial distribution. The parameter `n` is the number of trials and `p` is the probability of success for each trial.\r\n* `mvnormalvariate(mean_vec, cov)`: Generates a random vector from a multivariate normal distribution. The parameter `mean_vec` is the mean vector (1D array) and `cov` is the covariance matrix (2D array).\r\n* `continuous_random_vector_from_simplex(n_elements, summation, exact_sum)`: Generates a vector of non-negative real numbers whose elements sum to a specific value. The parameter `n_elements` is the number of vector elements, `summation` is the target sum, and `exact_sum` (boolean) determines if the sum is exact or less-than-or-equal-to the target.\r\n\r\n\r\n\r\n## References\r\n- Eckman DJ, Henderson SG, Shashaani S (2023) SimOpt: A testbed for simulation-optimization experiments. INFORMS Journal on Computing 35(2):495\u2013508.\r\n- L\u2019Ecuyer P (1999) Good parameters and implementations for combined multiple recursive random number generators. Operations Research 47(1):159\u2013164.\r\n- L\u2019Ecuyer P, Simard R, Chen EJ, Kelton WD (2002) An object-oriented random-number package with many long streams and substreams. Operations Research 50(6):1073\u20131075.\r\n\r\n\r\n\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT License\r\n \r\n Copyright (c) 2025 simulation-optimization\r\n \r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n \r\n The above copyright notice and this permission notice shall be included in all\r\n copies or substantial portions of the Software.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n SOFTWARE.",
"summary": "An accelerated version of the MRG32k3a generator using Numba for high-performance operations.",
"version": "1.0.0",
"project_urls": {
"Bug Tracker": "https://github.com/simulation-optimization/mrg32k3a-numba/issues",
"Homepage": "https://github.com/simulation-optimization/mrg32k3a-numba"
},
"split_keywords": [
"random number generator",
" rng",
" mrg32k3a",
" numba",
" simulation"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "021f69213ae4c8970ae223ef677e94eda90498854207091e511a56803a9b1899",
"md5": "1e054dd8cecac5d366f9c1652b417298",
"sha256": "290dc02f84cd5250c165a6da0fccd26313152f40bf628abd701e75095c04feb0"
},
"downloads": -1,
"filename": "mrg32k3a_numba-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1e054dd8cecac5d366f9c1652b417298",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14199,
"upload_time": "2025-07-12T13:20:06",
"upload_time_iso_8601": "2025-07-12T13:20:06.018802Z",
"url": "https://files.pythonhosted.org/packages/02/1f/69213ae4c8970ae223ef677e94eda90498854207091e511a56803a9b1899/mrg32k3a_numba-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f90f7cc9c0a2b9b5840d2483e323a9877d876ce38a1c7c77f1790aa35097f04d",
"md5": "69e9883223ccb956993eec40eea88ef4",
"sha256": "69fc76d5f19abfa30bde95280d9d9dda83bb2ca305d4f0bdd8790fd64f5d3dbb"
},
"downloads": -1,
"filename": "mrg32k3a_numba-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "69e9883223ccb956993eec40eea88ef4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 17118,
"upload_time": "2025-07-12T13:20:07",
"upload_time_iso_8601": "2025-07-12T13:20:07.515951Z",
"url": "https://files.pythonhosted.org/packages/f9/0f/7cc9c0a2b9b5840d2483e323a9877d876ce38a1c7c77f1790aa35097f04d/mrg32k3a_numba-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-12 13:20:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "simulation-optimization",
"github_project": "mrg32k3a-numba",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "mrg32k3a-numba"
}