## Random Number Generator

A Linear Congruential Random Number Generator (see Numerical Recipies in C by Press, Flannery, Teukolsky, Vetterling, section 7.1. for more information, or just check this link). It goes like this:

S[j] = (A * S[j - 1] + C) modulo M) R = N * S[j] / MWhere A (multiplier), C (increment), and M (modules) are appropriately chosen integral constants. S[j] is integral seed which is calculated from the previous seed (S[j-1]). R is the random double-precision floating point number calculated from the seed and normalized to the interval [N,0].

Each program is implemented using symbolic constants for A, C and M. The constants should be:

A = 3877 C = 29574 M = 139968For an input argument of 1000, the last random number generated should be 8.163294467 (starting with a seed value of 42).

#### Test Goal

The test exercises the ability of every language with a pure numerical algorithm, using both integers and floating point operations.

#### Input argument meaning

The argument specifies the number of random numbers to generate.

## Results

Language | Milliseconds | Weighted Characters |
---|---|---|

gcc 2.95.4 | 27 | 473 |

gcj 3.3.2 | 164 | 676 |

MzScheme 203 | 1169 | 506 |

Perl 5.8.0 | 1218 | 344 |

Python 2.3.2 | 1533 | 351 |

Tcl 8.4.5 | 2596 | 531 |

Ruby 1.7.2 | 3210 | 271 |

PHP 4.2.3 | 3933 | 400 |

Last updated: Sun Jan 18 11:15:31 CET 2004