Library for pseudo-random number generation in Curry.
This library provides operations for generating pseudo-random
number sequences.
For any given seed, the sequences generated by the operations
in this module should be identical
to the sequences
generated by the java.util.Random package.
The KiCS2 implementation is based on an algorithm taken from
http://en.wikipedia.org/wiki/Random_number_generation.
There is an assumption that all operations are implicitly
executed mod 2^32 (unsigned 32-bit integers) !!!
GHC computes between -2^29 and 2^29-1, thus the sequence
is NOT as random as one would like.
m_w = <choose-initializer>; /* must not be zero */ m_z = <choose-initializer>; /* must not be zero */
uint get_random()
{
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
return (m_z << 16) + m_w; /* 32-bit result */
}
The PAKCS implementation is a linear congruential pseudo-random number generator described in Donald E. Knuth, The Art of Computer Programming, Volume 2: Seminumerical Algorithms, section 3.2.1.
Author: Sergio Antoy (with extensions by Michael Hanus)
Version: June 2017
nextInt
:: Int -> [Int]
Returns a sequence of pseudorandom, integer values. |
nextIntRange
:: Int -> Int -> [Int]
Returns a pseudorandom sequence of values between 0 (inclusive) and the specified value (exclusive). |
nextBoolean
:: Int -> [Bool]
Returns a pseudorandom sequence of boolean values. |
getRandomSeed
:: IO Int
Returns a time-dependent integer number as a seed for really random numbers. |
shuffle
:: Int -> [a] -> [a]
Computes a random permutation of the given list. |
|
Returns a sequence of pseudorandom, integer values.
|
|
Returns a pseudorandom sequence of values between 0 (inclusive) and the specified value (exclusive).
|
|
Returns a pseudorandom sequence of boolean values.
|
|
Returns a time-dependent integer number as a seed for really random numbers. Should only be used as a seed for pseudorandom number sequence and not as a random number since the precision is limited to milliseconds |
|
Computes a random permutation of the given list.
|