A random number generator (RNG) is a computational or physical device that produces a sequence of numbers that are random and hard to predict. RNGs are used in a variety of applications, including generating random numbers for games, simulating statistical experiments, and generating cryptographic keys.

There are two main types of RNGs: deterministic RNGs (DRNGs) and true random number generators (TRNGs). DRNGs use an algorithm to generate a sequence of numbers that appears random, but the sequence is ultimately determined by an initial seed value. TRNGs, on the other hand, use physical processes such as atmospheric noise or radioactive decay to generate truly random numbers.

In software, RNGs are often implemented as functions or methods that can be called to generate a random number. Some programming languages, such as Python, have built-in RNG functions that can be used to generate random numbers.