Crates.io | hashed-permutation |
lib.rs | hashed-permutation |
version | 3.0.2 |
source | src |
created_at | 2019-09-09 04:11:48.84763 |
updated_at | 2020-12-26 22:41:34.314271 |
description | A fast, instant-access way to permute a range of numbers |
homepage | |
repository | https://github.com/afnanenayet/hashed-permutation.git |
max_upload_size | |
id | 163430 |
size | 19,713 |
This is an implementation of Andrew Kensler's hashed permutation, which allows you to take an array of the elements [0 ... n) and shuffle it with no memory overhead and very little computational overhead. This works by using a clever hash function to effectively permute all of the elements in the array.
Basically, you get a nearly free method to shuffle a bunch of numbers that
doesn't require you to allocate a vector of size n
, letting you sample the
set without replacement.
You can find the paper here: https://graphics.pixar.com/library/MultiJitteredSampling/paper.pdf. I have a little writeup of how the algorithm works here, and Timothy Hobbs made a nice writeup explaining how to use the library itself here.