Crate weird_data
source ·Expand description
Generate random data in such a way as to make rare edge-cases very likely.
Disclaimer: the random number generators used in this crate are NOT CRYPTOGRAPHICALLY SECURE. Only use these generators for generating testing inputs, do not rely on them for cryptographic purposes in production code! For instance, you may test a cryptographic tool with these generators, but you may not deploy code that relies on these generators for security in production.
For instance, if generating a random f32 by uniformly sampling 32 bits of
data, certain values will rarely appear, such as NAN and INFINITY. When
doing randomized testing, like fuzzing, it isn’t very useful to repeatedly
generate well-behaved data. It is much more useful if we can artificially
increase the likelihood of these special values, so that we test with them
more often.
Additionally, some random number crates will never generate certain
problematic bit-patterns, such as NAN.
This crate is based on the fastrand crate.
This crate can work with no_std, if you disable the std feature. You
cannot use the global functions when in a no_std environment. In that
case, you can explicitly instantiate Wdg and call the methods on it.
They are equivalent.
If using std, it’s more ergonomic to use the global functions in the
[global_functions] module.
Structs
- A weird data generator
Functions
- Generate a random f32, such that special or problematic values are much more common than normal.
- Generate a random f64, such that special or problematic values are much more common than normal.
- Gives back the current seed that is being held by the thread-local generator.
- There are multiple bit patterns that are equivalent to a
NAN. This generator covers all possibleNANvalues as specified in IEEE-754, even ones that Rust would normally not generate. - Generates a random f64
NANvalue. - Generate a random f32 normal value
- Generate a random f64 normal value
- Initialize the thread-local generator with the given seed.
- Generate a random f32 “special” value
- Generate a random f64 “special” value
- Generates a random f32 denormal value.
- Generates a random f64 denormal value.