Distribution Stats & Timer for Testing Non-deterministic Value Generators
Project description
MonkeyScope Beta
Distribution Timer for Non-deterministic Value Generators
Sister Projects:
- Fortuna: Collection of abstractions to make custom random value generators. https://pypi.org/project/Fortuna/
- Pyewacket: Complete drop-in replacement for the Python3 random module. https://pypi.org/project/Pyewacket/
- RNG: Python3 API for the C++ Random Library. https://pypi.org/project/RNG/
Support these and other random projects: https://www.patreon.com/brokencode
Quick Install
$ pip install MonkeyScope
$ python3
>>> import MonkeyScope ...
Installation may require the following:
- Python 3.7 or later.
- Cython:
pip install Cython
- Python3 developer environment, setuptools etc.
- Modern C++17 Compiler and Standard Library.
MonkeyScope Specifications
MonkeyScope.distribution_timer(func: staticmethod, *args, **kwargs) -> None
- Logger for the statistical analysis of non-deterministic output.
- @param func :: function, method or lambda to analyze.
func(*args, **kwargs)
- @optional_kw num_cycles=10000 :: Total number of samples to use for analysis.
- @optional_kw post_processor=None :: Used to scale a large set of data into a smaller set of groupings for better visualization of the data, esp. useful for distributions of floats. For many functions in quick_test(), math.floor() is used, for others round() is more appropriate. For more complex post processing - lambdas work nicely. Post processing only affects the distribution, the statistics and performance results are unaffected.
MonkeyScope.distribution(func: staticmethod, *args, **kwargs) -> None
- Stats and distribution.
MonkeyScope.timer(func: staticmethod, *args, **kwargs) -> None
- Just the function timer.
MonkeyScope Terminal Example
$ python3
Python 3.7.3
>>> import MonkeyScope
>>> import random
>>> MonkeyScope.timer(random.randrange, -10000, 10000, 2)
Typical Timing: 1594 ± 34 ns
MonkeyScope Script Example
import MonkeyScope
import random
MonkeyScope.distribution_timer(random.randint, 1, 10)
MonkeyScope.distribution_timer(random.randrange, 1, 10)
MonkeyScope.distribution_timer(random.randrange, 1, 10, 2)
Typical Script Output
Output Analysis: Random.randint(1, 10)
Typical Timing: 1375 ± 32 ns
Statistics of 1024 samples:
Minimum: 1
Median: 6
Maximum: 10
Mean: 5.5185546875
Std Deviation: 2.8455943311882343
Distribution of 102400 samples:
1: 10.1171875%
2: 9.943359375%
3: 9.9541015625%
4: 9.8916015625%
5: 10.1318359375%
6: 10.0361328125%
7: 9.8681640625%
8: 10.16796875%
9: 9.9052734375%
10: 9.984375%
Output Analysis: Random.randrange(1, 10)
Typical Timing: 1219 ± 35 ns
Statistics of 1024 samples:
Minimum: 1
Median: 5
Maximum: 9
Mean: 4.9609375
Std Deviation: 2.531992268646342
Distribution of 102400 samples:
1: 11.0205078125%
2: 11.2080078125%
3: 11.16015625%
4: 11.08203125%
5: 11.1484375%
6: 11.0791015625%
7: 11.1923828125%
8: 10.9375%
9: 11.171875%
Output Analysis: Random.randrange(1, 10, 2)
Typical Timing: 1532 ± 36 ns
Statistics of 1024 samples:
Minimum: 1
Median: 5
Maximum: 9
Mean: 5.029296875
Std Deviation: 2.8123316447928097
Distribution of 102400 samples:
1: 19.984375%
3: 19.931640625%
5: 20.1552734375%
7: 19.93359375%
9: 19.9951171875%
ToDo List:
- Improve Documentation
- Concoct Examples
- Derive Tests
- Refactor Inception
Development Log:
MonkeyScope Beta 0.1.4
- Minor Bug Fix
MonkeyScope Beta 0.1.3
- Continued Development
MonkeyScope Beta 0.1.2
- Renamed to MonkeyScope
MonkeyTimer Beta 0.0.2
- Changed to c++ compiler
MonkeyTimer Beta 0.0.1
- Initial Project Setup
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
MonkeyScope-0.1.4.tar.gz
(65.8 kB
view details)
Built Distribution
File details
Details for the file MonkeyScope-0.1.4.tar.gz
.
File metadata
- Download URL: MonkeyScope-0.1.4.tar.gz
- Upload date:
- Size: 65.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7d83e891307a7a21f0d38939bbcf2c7d6cc7d6442ae5de40974a3cc9eab6ad5 |
|
MD5 | a8ceba759711b34daf117fee5d0e25e2 |
|
BLAKE2b-256 | a4a9637e89330173543675cace58942b804c17ccf3743a0b02cb99201010cc05 |
File details
Details for the file MonkeyScope-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: MonkeyScope-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl
- Upload date:
- Size: 54.4 kB
- Tags: CPython 3.7m, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.27.0 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a53ef9ae511c8d69d452af41d8f9e0226f1a3287befa293c65879b8e3b17d66a |
|
MD5 | d85b776d9be3a34f59d31f8728dd2c0d |
|
BLAKE2b-256 | 8af16a221e8785e59485f8170577c0b82249b69d7b120e82b1a480e94c117211 |