Random number generators.
More...
List of all members.
Public Member Functions |
subroutine | pmc_srand (seed, offset) |
| Initializes the random number generator to the state defined by the given seed plus offset. If the seed is 0 then a seed is auto-generated from the current time plus offset.
|
subroutine | pmc_rand_finalize () |
| Cleanup the random number generator.
|
real(kind=dp) function | pmc_random () |
| Returns a random number between 0 and 1.
|
integer function | pmc_rand_int (n) |
| Returns a random integer between 1 and n.
|
integer function | prob_round (val) |
| Round val to floor(val) or ceiling(val) with probability proportional to the relative distance from val . That is, Prob(prob_round(val) == floor(val)) = ceil(val) - val.
|
integer function | rand_poisson (mean) |
| Generate a Poisson-distributed random number with the given mean.
|
integer function | rand_binomial (n, p) |
| Generate a Binomial-distributed random number with the given parameters.
|
real(kind=dp) function | rand_normal (mean, stddev) |
| Generates a normally distributed random number with the given mean and standard deviation.
|
integer function | sample_cts_pdf (pdf) |
| Sample the given continuous probability density function.
|
integer function | sample_disc_pdf (pdf) |
| Sample the given discrete probability density function.
|
subroutine | sample_vec_cts_to_disc (vec_cts, n_samp, vec_disc) |
| Convert a real-valued vector into an integer-valued vector by sampling.
|
character function | rand_hex_char () |
| Generate a random hexadecimal character.
|
subroutine | uuid4_str (uuid) |
| Generate a version 4 UUID as a string.
|
real(kind=dp) function | student_t_95_coeff (n_sample) |
| Return a fairly tight upper-bound on the Student's t coefficient for the 95% confidence interval.
|
Public Attributes |
integer, parameter | PMC_UUID_LEN = 36 |
| Length of a UUID string.
|
integer, parameter | PMC_RAND_GSL_SUCCESS = 0 |
| Result code indicating successful completion.
|
integer, parameter | PMC_RAND_GSL_INIT_FAIL = 1 |
| Result code indicating initialization failure.
|
integer, parameter | PMC_RAND_GSL_NOT_INIT = 2 |
| Result code indicating the generator was not initialized when it should have been.
|
integer, parameter | PMC_RAND_GSL_ALREADY_INIT = 3 |
| Result code indicating the generator was already initialized when an initialization was attempted.
|
Detailed Description
Random number generators.
Definition at line 9 of file rand.F90.
Member Function/Subroutine Documentation
subroutine pmc_rand::pmc_rand_finalize |
( |
| ) |
|
Cleanup the random number generator.
Definition at line 118 of file rand.F90.
integer function pmc_rand::pmc_rand_int |
( |
integer, intent(in) |
n | ) |
|
Returns a random integer between 1 and n.
- Parameters:
-
[in] | n | Maximum random number to generate. |
Definition at line 172 of file rand.F90.
real(kind=dp) function pmc_rand::pmc_random |
( |
| ) |
|
Returns a random number between 0 and 1.
Definition at line 138 of file rand.F90.
subroutine pmc_rand::pmc_srand |
( |
integer, intent(in) |
seed, |
|
|
integer, intent(in) |
offset |
|
) |
| |
Initializes the random number generator to the state defined by the given seed plus offset. If the seed is 0 then a seed is auto-generated from the current time plus offset.
- Parameters:
-
[in] | seed | Random number generator seed. |
[in] | offset | Random number generator offset. |
Definition at line 66 of file rand.F90.
integer function pmc_rand::prob_round |
( |
real(kind=dp), intent(in) |
val | ) |
|
Round val to floor(val)
or ceiling(val)
with probability proportional to the relative distance from val
. That is, Prob(prob_round(val) == floor(val)) = ceil(val) - val.
- Parameters:
-
Definition at line 214 of file rand.F90.
integer function pmc_rand::rand_binomial |
( |
integer, intent(in) |
n, |
|
|
real(kind=dp), intent(in) |
p |
|
) |
| |
Generate a Binomial-distributed random number with the given parameters.
See http://en.wikipedia.org/wiki/Binomial_distribution for information on the method. The method used at present is rather inefficient and inaccurate (brute force for
and
, otherwise normal approximation).
For better methods, see L. Devroye, "Non-Uniform Random Variate
Generation", Springer-Verlag, 1986.
- Parameters:
-
[in] | n | Sample size. |
[in] | p | Sample probability. |
Definition at line 319 of file rand.F90.
character function pmc_rand::rand_hex_char |
( |
| ) |
|
Generate a random hexadecimal character.
Definition at line 558 of file rand.F90.
real(kind=dp) function pmc_rand::rand_normal |
( |
real(kind=dp), intent(in) |
mean, |
|
|
real(kind=dp), intent(in) |
stddev |
|
) |
| |
Generates a normally distributed random number with the given mean and standard deviation.
- Parameters:
-
[in] | mean | Mean of distribution. |
[in] | stddev | Standard deviation of distribution. |
Definition at line 407 of file rand.F90.
integer function pmc_rand::rand_poisson |
( |
real(kind=dp), intent(in) |
mean | ) |
|
Generate a Poisson-distributed random number with the given mean.
See http://en.wikipedia.org/wiki/Poisson_distribution for information on the method. The method used at present is rather inefficient and inaccurate (brute force for mean below 10 and normal approximation above that point).
The best known method appears to be due to Ahrens and Dieter (ACM Trans. Math. Software, 8(2), 163-179, 1982) and is available (in various forms) from:
Unfortunately the above code is under the non-free license:
For other reasonable methods see L. Devroye, "Non-Uniform Random
Variate Generation", Springer-Verlag, 1986.
- Parameters:
-
[in] | mean | Mean of the distribution. |
Definition at line 252 of file rand.F90.
integer function pmc_rand::sample_cts_pdf |
( |
real(kind=dp), dimension(:), intent(in) |
pdf | ) |
|
Sample the given continuous probability density function.
That is, return a number k = 1,...,n such that prob(k) = pdf(k) / sum(pdf). Uses accept-reject.
- Parameters:
-
[in] | pdf | Probability density function (not normalized). |
Definition at line 467 of file rand.F90.
integer function pmc_rand::sample_disc_pdf |
( |
integer, dimension(:), intent(in) |
pdf | ) |
|
Sample the given discrete probability density function.
That is, return a number k = 1,...,n such that prob(k) = pdf(k) / sum(pdf). Uses accept-reject.
- Parameters:
-
[in] | pdf | Probability density function. |
Definition at line 501 of file rand.F90.
subroutine pmc_rand::sample_vec_cts_to_disc |
( |
real(kind=dp), dimension(:), intent(in) |
vec_cts, |
|
|
integer, intent(in) |
n_samp, |
|
|
integer, dimension(size(vec_cts)), intent(out) |
vec_disc |
|
) |
| |
Convert a real-valued vector into an integer-valued vector by sampling.
Use n_samp samples. Each discrete entry is sampled with a PDF given by vec_cts. This is very slow for large n_samp or large n.
- Parameters:
-
[in] | vec_cts | Continuous vector. |
[in] | n_samp | Number of discrete samples to use. |
[out] | vec_disc | Discretized vector. |
Definition at line 535 of file rand.F90.
real(kind=dp) function pmc_rand::student_t_95_coeff |
( |
integer, intent(in) |
n_sample | ) |
|
subroutine pmc_rand::uuid4_str |
( |
character(len=PMC_UUID_LEN), intent(out) |
uuid | ) |
|
Member Data Documentation
Result code indicating the generator was already initialized when an initialization was attempted.
Definition at line 30 of file rand.F90.
Result code indicating initialization failure.
Definition at line 24 of file rand.F90.
Result code indicating the generator was not initialized when it should have been.
Definition at line 27 of file rand.F90.
Result code indicating successful completion.
Definition at line 22 of file rand.F90.
Length of a UUID string.
Definition at line 19 of file rand.F90.
The documentation for this module was generated from the following file: