Knuth B Shuffle Algorithm
Project description
Knuth B Shuffle Algorithm
Destructive, In-place Shuffle
Reverse Order Random Swap Backwards - a cache friendly inplace shuffle algorithm.
Mac & Linux Installation
$ pip install KnuthB
Installation may require Cython, and modern C++ development environment (Clang or GCC).
Shuffle Tests
Base Case: Random.shuffle
>>> from random import py_shuffle
>>> a = [*range(10)]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> py_shuffle(a)
>>> print(a)
[4, 3, 2, 0, 9, 7, 5, 6, 8, 1]
Test Case: KnuthB.shuffle
>>> from KnuthB import shuffle as knuth
>>> a = [*range(10)]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> knuth(a)
>>> print(a)
[9, 1, 7, 8, 3, 2, 4, 6, 5, 0]
MonkeyScope Timer Tests
Base Case: Random.shuffle()
>>> from MonkeyScope import timer
>>> from random import shuffle as py_shuffle
>>> a = [*range(10000)]
>>> a = [*range(10000)]
>>> timer(py_shuffle, a, cycles=1)
Typical Timing: 10205985 ± 0 ns
Test Case: KnuthB.shuffle()
>>> from MonkeyScope import timer
>>> from KnuthB import shuffle as knuth
>>> a = [*range(10000)]
>>> timer(knuth, a, cycles=1)
Typical Timing: 679970 ± 0 ns
Performance Results
Time to Shuffle 10,000 Items
- Random.shuffle: 10,205,985 ns (approx 10.2 milliseconds)
- KnuthB.shuffle: 679,970 ns (approx 0.7 milliseconds)
* Lower is better
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
KnuthB-0.0.1.tar.gz
(22.3 kB
view details)
Built Distribution
File details
Details for the file KnuthB-0.0.1.tar.gz
.
File metadata
- Download URL: KnuthB-0.0.1.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64f30ee9bccb6b1f17e5a39d29117119759a50aab83256d3c9e59497c19b8d6c |
|
MD5 | 4766e93ceaf1a3a6c6c67c02043e3417 |
|
BLAKE2b-256 | 8e58d3deb8245f3ddeff02d23273b4ae30bd86a584c5b70cfae33ae03d05b4b4 |
File details
Details for the file KnuthB-0.0.1-cp38-cp38-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: KnuthB-0.0.1-cp38-cp38-macosx_10_9_x86_64.whl
- Upload date:
- Size: 11.0 kB
- Tags: CPython 3.8, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3eb5829e1d130d5f1d749a12dadcdbbf2d2bfb317eede1fb62428a610848dc2e |
|
MD5 | e6bd4d556cd6296b17449fa7775aff10 |
|
BLAKE2b-256 | 7c3a2750a1029fca5b6695d69a1b62e72ecbcd45653fb3d94b0bb7cdb684e77b |