Random Generators
The Go standard library provides utility libraries to create random number generators. The implementations are provided in the crypto/rand
and math/rand
packages. The math/rand
library can be used to generate random integers; however, randomness cannot be guaranteed. Therefore, this library should only be used in cases where the number can be generally random and is not security-sensitive.
Otherwise, you should always use crypto/rand
. As a side note, the crypto/rand
package relies on OS randomness – for example, on Linux it uses /dev/urandom
. Therefore, it is generally slower than the math library implementation.
To produce a random integer between 0 and a user-defined number using the crypto/rand
library, we can use the following function:
funcInt(rand io.Reader, max *big.Int) (n *big.Int, err error)
There are many scenarios where we might want to generate a secure random number, for example, when generating unique session IDs. It is important...