[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'System' (#rtl)

# Random

Generate random number

## Declaration

Source position: line 0

`function Random(`
`l: LongInt`
`):LongInt; function Random(`
`l: Int64`
`):Int64; function Random: extended;`

## Description

Random returns a random number larger or equal to 0 and strictly less than L. If the argument L is omitted, a Real number between 0 and 1 is returned (0 included, 1 excluded).

Remark: | The Free Pascal implementation of the Random routine uses the Mersenne Twister to simulate randomness. This implementation has a better statistical distribution than for example a Linear Congruential generator algorithm, but is considerably slower than the latter. If speed is an issue, then alternate random number generators should be considered.

## Errors

None.

## See also

Randomize |  | Initialize random number generator

## Example

    Program Example49;

    { Program to demonstrate the Random and Randomize functions. }

    Var I,Count,guess : Longint;
        R : Real;

    begin
      Randomize; { This way we generate a new sequence every time
                   the program is run}
      Count:=0;
      For i:=1 to 1000 do
        If Random>0.5 then inc(Count);
      Writeln ('Generated ',Count,' numbers > 0.5');
      Writeln ('out of 1000 generated numbers.');
      count:=0;
      For i:=1 to 5 do
        begin
        write ('Guess a number between 1 and 5 : ');
        readln(Guess);
        If Guess=Random(5)+1 then inc(count);
        end;
      Writeln ('You guessed ',Count,' out of 5 correct.');
    end.

Documentation generated on: Feb 26 2014