RNG(乱数生成器)
(疑似)乱数を生成するもの。大きく二種類あり、シードから決定的に決まるPRNG(ゲームやシミュレーション向け)と、暗号学的に安全なCSPRNG(鍵やトークン向け)である。
古典的なPRNGにはMersenne Twister(1997年)、xorshift、PCGがある。CSPRNGの例は、Linuxの /dev/urandom や getrandom() システムコールで使われるChaCha20ベースのものだ。暗号用途に rand() を使ってはいけない。getrandom や crypto.getRandomValues を使うこと。
2010年代にはゲームの乱数をめぐる論争があった。ルートボックスや「不正に操作されている」という感覚だが、たいていは正しい乱数が偏って見えているだけである。近年のハードウェアRNGにはIntelのRDRANDやArmのTRNGがあるものの、バックドアの懸念がつきまとうことも多い。