Expand description
Armnod is an anagram for “random”; Armnod is a library for working with random strings.
Each Armnod consists of a SeedChooser, LengthChooser, and CharacterChooser which compose a set of random strings. The SeedChooser picks the element of the set. It may say to stop iterating (enough items have been chosen), it may say to seek to a particular offset in another guacamole generator (there’s a finite number of seeds), or it may say to not seek at all (an “infinite” number of strings are possible).
The SeedChooser and LengthChooser both pull from a guacamole::Guacamole stream to
generate the seed and a u32 for the string’s length. It’s easy to see that when the guac is
positioned at the same point in the stream, the seed and length will be the same.
CharacterChooser pulls bytes from the string and maps them to characters to create a string. Essentially mapping the binary data to ASCII data. UTF-8 marginally supported.
Structs
- Armnod is an anagram of Random
- Choose characters from alphabets of up to 96 characters.
- ConstantLengthChooser generates strings of uniform length.
- RandomStringChooser skips seeding entirely. This saves on CPU for when all that’s needed are pseudo-random strings.
- Choose strings from a set of strings with uniform probability.
- Return a range of strings over
[start, limit). - Draw values according to a Zipf distribution.
- UniformLengthChooser generates strings with a uniform distribution between a minimum and maximum length.
Enums
- SeedChoice chooses the string to be generated from one of three possibilities. The first could be to not generate anything and stop iterating. This is useful, e.g., when the SeedChoice generates each string exactly once for purposes of loading data. The second choice is to skip seeding. This will avoid a seek at the lower level random number generator, but it means the data generated will truly span the domain of Guacamole.
Constants
Traits
- Generate strings of a given alphabet using the provided randomness.
- Given Guacamole, generate a string length for the next string.