The task is to:

 State the type of random number generator algorithm used in a language's built-in random number generator. If the language or its immediate libraries don't provide a random number generator, skip this task.
 If possible, give a link to a wider explanation of the algorithm used.
Note: the task is not to create an RNG, but to report on the languages in-built RNG that would be the most likely RNG used.

The main types of pseudo-random number generator (PRNG) that are in use are the Linear Congruential Generator (LCG), and the Generalized Feedback Shift Register (GFSR), (of which the Mersenne twister generator is a subclass). The last main type is where the output of one of the previous ones (typically a Mersenne twister) is fed through a cryptographic hash function to maximize unpredictability of individual bits.

Note that neither LCGs nor GFSRs should be used for the most demanding applications (cryptography) without additional steps.

PROC ℒ next random = (REF ℒ INT a)ℒ REAL: ( a := 
¢ the next pseudo-random ℒ integral value after 'a' from a 
uniformly distributed sequence on the interval [ℒ 0,ℒ maxint] ¢; 
 
¢ the real value corresponding to 'a' according to some mapping of 
integral values [ℒ 0, ℒ max int] into real values [ℒ 0, ℒ 1) 
i.e. such that -0 <= x < 1 such that the sequence of real 
values so produced preserves the properties of pseudo-randomness 
and uniform distribution of the sequence of integral values ¢); 
 
INT ℒ last random := # some initial random number #;
PROC ℒ random = ℒ REAL: ℒ next random(ℒ last random);