apiculture/random
Secure randomness abstraction.
This module provides cryptographically secure random generation for Erlang and JavaScript targets. It exposes both byte generation and unbiased direct alphabet sampling.
Values
pub fn random_bytes(count: Int) -> Result(BitArray, error.Error)
Generates cryptographically secure random bytes.
On Erlang: Uses crypto:strong_rand_bytes/1
On JavaScript: Uses crypto.getRandomValues() (Web Crypto API)
Returns an error if secure randomness is unavailable.
pub fn random_chars(
alphabet alphabet: alphabet.Alphabet,
count count: Int,
) -> Result(List(Int), error.Error)
Generates cryptographically secure random characters by sampling directly from an alphabet using rejection sampling to avoid modulo bias.
This is mathematically distinct from generating random bytes and then encoding them - this samples characters directly from the alphabet.