this set of functions generates random bytes or numbers from OpenSSL. This provides a cryptographically secure alternative to R's default random number generator. rand_bytes generates n random cryptographically secure bytes

rand_bytes(n = 1)

rand_num(n = 1)

Arguments

n

number of random bytes or numbers to generate

Examples

rnd <- rand_bytes(10)
as.numeric(rnd)
#>  [1] 170  15 213  63  25  14 214  98  92 223
as.character(rnd)
#>  [1] "aa" "0f" "d5" "3f" "19" "0e" "d6" "62" "5c" "df"
as.logical(rawToBits(rnd))
#>  [1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
#> [13] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
#> [25]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
#> [37]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
#> [49] FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
#> [61] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
#> [73]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE

# bytes range from 0 to 255
rnd <- rand_bytes(100000)
hist(as.numeric(rnd), breaks=-1:255)


# Generate random doubles between 0 and 1
rand_num(5)
#> [1] 0.1577924 0.8609018 0.3032421 0.6333161 0.4968061

# Use CDF to map [0,1] into random draws from a distribution
x <- qnorm(rand_num(1000), mean=100, sd=15)
hist(x)


y <- qbinom(rand_num(1000), size=10, prob=0.3)
hist(y)