Random number generator (included): Difference between revisions
No edit summary |
(Added Factor.) |
||
Line 4: | Line 4: | ||
<small>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.</small> |
<small>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.</small> |
||
=={{header|Factor}}== |
|||
The default RNG used when the <code>random</code> vocabulary is used, is the [[wp:Mersenne twister|Mersenne twister]] algorithm [http://docs.factorcode.org/content/article-random.html]. But there are other RNGs available, including [[wp:SFMT|SFMT]], the system RNG ([[wp:/dev/random|/dev/random]] on Unix) and [[wp:Blum Blum Shub|Blum Blum Shub]]. It's also very easy to implement your own RNG and integrate it into the system. [http://docs.factorcode.org/content/article-random-protocol.html] |
|||
=={{header|Java}}== |
=={{header|Java}}== |
||
Java's <code>Random</code> class uses a [[wp:Linear congruential generator|Linear congruential formula]], as described in [http://java.sun.com/javase/6/docs/api/java/util/Random.html its documentation]. |
Java's <code>Random</code> class uses a [[wp:Linear congruential generator|Linear congruential formula]], as described in [http://java.sun.com/javase/6/docs/api/java/util/Random.html its documentation]. |
Revision as of 22:56, 23 January 2010
State the type of random number generator algorithm used in a languages built-in random number generator, or omit the language if no random number generator is given as part of the language or its immediate libraries.
If possible, a link to a wider explanation of the algorithm used should be given.
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.
Factor
The default RNG used when the random
vocabulary is used, is the Mersenne twister algorithm [1]. But there are other RNGs available, including SFMT, the system RNG (/dev/random on Unix) and Blum Blum Shub. It's also very easy to implement your own RNG and integrate it into the system. [2]
Java
Java's Random
class uses a Linear congruential formula, as described in its documentation.
PHP
PHP has two random number generators: rand
, which uses the underlying C library's rand
function; and mt_rand
, which uses the Mersenne twister algorithm.
Python
Python uses the Mersenne twister algorithm accessed via the built-in random module.
Ruby
Ruby's rand
function currently uses the Mersenne twister algorithm, as described in its documentation.
Tcl
Tcl uses a linear congruential generator in it's built-in rand()
function. This is seeded by default from the system time, and kept per-interpreter so different security contexts and different threads can't affect each other's generators (avoiding key deployment issues with the rand function from C's math library).
Citations (from Tcl source code):
- S.K. Park & K.W. Miller, “Random number generators: good ones are hard to find,” Comm ACM 31(10):1192-1201, Oct 1988
- W.H. Press & S.A. Teukolsky, “Portable random number generators,” Computers in Physics 6(5):522-524, Sep/Oct 1992.