|
|
||||||
|
Random Variables Detailed DescriptionSampling or evaluating random variables for simulation. This module implements the evaluation (also known as sampling) of random variables with various distributions. It specialises on restricted support PDFs, since this is required for the ProposingExecutor. Random variables and their simulation is a highly involved topic and we give credit to the sources from which this module stems: 1) Implementation of a random number generator from Stave Park and Dave Geyer, which we use in original form up to minor cosmetic changes. 2) 3) Gaussian CDF by an aproximation that we found in "Handbook of Mathematical Functions" by Abromowitz and Stegun. All sources were available freely and we did not find any restricting licensing terms. Thanks! Regarding 1), from the header of rngs.c This is an ANSI C library for multi-stream random number generation. The streams must be initialized. The recommended way to do this is by using the function PlantSeeds(x) with the value of x used to initialize the default stream and all other streams initialized automatically with values dependent on the value of x. The following convention is used to initialize the default stream: "Random Number Generators: Good Ones Are Hard To Find" \n Steve Park and Keith Miller \n Communications of the ACM, October 1988 \n Name : rngs.c (Random Number Generation - Multiple Streams) Regarding 2), from the header of rngs.c This function returns an approximation of the inverse cumulative standard normal distribution function. I.e., given P, it returns an approximation to the X satisfying P = Pr{Z <= X} where Z is a random variable from the standard normal distribution. The algorithm uses a minimax approximation by rational functions and the result has a relative error whose absolute value is less than 1.15e-9. Author: Peter J. Acklam Regarding 3) found as code example in Wikipedia
Function Documentation◆ ran()
Run random generator Random Number Generator (for more details see "Random Number Generators: Good Ones Are Hard To Find" Steve Park and Keith Miller Communications of the ACM, October 1988)
Definition at line 75 of file sp_random.cpp. ◆ ran_exponential() [1/2]
Sample a random variable exponentially Distribution: f(t) dt = 1/mu exp(-t/mu) dt for t>=0.
Definition at line 107 of file sp_random.cpp. ◆ ran_exponential() [2/2]
Sample a random variable exponentially on a restricted interval Distribution: f(t) dt = 1/mu exp(-t/mu) dt for t>=0.
Definition at line 116 of file sp_random.cpp. ◆ ran_gauss()
Sample a random variable gaussian distributed on a restricted interval Distribution: f(t) = 1 / sqrt(2 pi sigma^2) * exp( -1/2 ((t-mu)/sigma)^2) for t>=0.
Definition at line 132 of file sp_random.cpp. ◆ ran_gaussian_cdf_P()
Help function: calculate gaussian CDF using an approximation from Abromowitz and Stegun: Handbook of Mathematical Functions.
Definition at line 224 of file sp_random.cpp. ◆ ran_init()
Initialize random generator.
Definition at line 67 of file sp_random.cpp. ◆ ran_plant_seeds()
Use this function to set the state of all the random number generator streams by "planting" a sequence of states (seeds), one per stream, with all states dictated by the state of the default stream. The sequence of planted states is separated one from the next by 8,367,782 calls to ran(). Definition at line 35 of file sp_random.cpp. ◆ ran_put_seed()
◆ ran_select_stream()
Use this function to set the current random number generator stream – that stream from which the next random number will come. Definition at line 60 of file sp_random.cpp. ◆ ran_uniform()
Sample a random variable uniformly on interval [a;b) Distribution: f(t) dt= {1/(b-a)} dt for t, a <=t< b, else 0.
Definition at line 91 of file sp_random.cpp. ◆ ran_uniform_int()
Sample a discrete random variable uniformly on interval [a;b) Distribution: p(n) = 1/(b-a-1)
Definition at line 98 of file sp_random.cpp. libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen |