# [−][src]Module ring::rand

Cryptographic pseudo-random number generation.

An application should create a single `SystemRandom`

and then use it for
all randomness generation. Functions that generate random bytes should take
a `&dyn SecureRandom`

parameter instead of instantiating their own. Besides
being more efficient, this also helps document where non-deterministic
(random) outputs occur. Taking a reference to a `SecureRandom`

also helps
with testing techniques like fuzzing, where it is useful to use a
(non-secure) deterministic implementation of `SecureRandom`

so that results
can be replayed. Following this pattern also may help with sandboxing
(seccomp filters on Linux in particular). See `SystemRandom`

's
documentation for more details.

## Structs

Random | A random value constructed from a |

SystemRandom | A secure random number generator where the random values come directly from the operating system. |

## Traits

RandomlyConstructable | A type that can be returned by |

SecureRandom | A secure random number generator. |

## Functions

generate | Generate the new random value using |