Skip to content

bbc2/shuffled

Repository files navigation

Shuffled: Random iterators for large integer ranges

Shuffled is a library for iterating randomly and without repetition over integer ranges. It doesn’t store all the integers in memory so that you can work with ranges of up to 2128 elements, even with your standard RAM available.

Installation

pip install shuffled

Usage

Example: Generating a permutation of integers.

>>> from shuffled import Shuffled
>>> shuffled_range = Shuffled(10)
>>> list(shuffled_range)
[4, 1, 2, 9, 8, 5, 3, 0, 6, 7]
>>> same_shuffled_range = Shuffled(10, seed=shuffled_range.seed)
>>> list(same_shuffled_range)
[4, 1, 2, 9, 8, 5, 3, 0, 6, 7]

Example: Listing all IP addresses in a subnet in random order.

>>> import ipaddress
>>> from shuffled import Shuffled
>>> network = ipaddress.IPv4Network('10.0.0.0/8')
>>> shuffled_range = Shuffled(network.num_addresses)
>>> for index in shuffled_range:
...     print(network[index])
...
10.24.41.126
10.67.199.15
10.240.82.199
10.79.219.74
10.166.105.25
10.19.5.91
# Continues for all 16M addresses in the subnet

Release

  • Update the changelog.
  • Bump the version identified in pyproject.toml.
  • After those changes are merged into main, tag the commit on main and push it.
    • The CI/CD process will publish the new package version on PyPI.

About

Python random permutations of large integer ranges

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors