Os sistemas operacionais oferecem um, com semente vinda da entropia do hardware: getrandom(2) e /dev/urandom no Linux, getentropy e arc4random no macOS e nos BSDs, BCryptGenRandom no Windows. As APIs das linguagens os encapsulam: crypto.getRandomValues() nos navegadores (no máximo 65.536 bytes por chamada), crypto.randomBytes no Node.js, o secrets do Python, o crypto/rand do Go e o SecureRandom do Java. Math.random(), o random do Python e outros geradores de uso geral semelhantes são previsíveis e nunca devem produzir segredos.
O NIST SP 800-90A Rev. 1 especifica os geradores determinísticos aprovados (Hash_DRBG, HMAC_DRBG e CTR_DRBG), o SP 800-90B, as fontes de entropia, e o SP 800-90C, como combiná-los; os módulos FIPS 140-3 devem usá-los. O Dual_EC_DRBG, já retirado, é o exemplo clássico de gerador com suspeita de backdoor.
A maioria das falhas reais de RNG tem a ver com a semente, e não com os algoritmos: dispositivos embarcados que geram chaves antes de haver entropia suficiente, máquinas virtuais clonadas que retomam a execução com o mesmo estado e processos criados com fork que compartilham um gerador. O ECDSA é especialmente sensível, porque um nonce previsível expõe a chave; nonces determinísticos ou hedged eliminam essa dependência.