Random Variables Sampling or evaluating random variables for simulation. More... Sampling 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) Inverse gaussian CDF by rational approxomation coefficients, presumably by Peter J, Acjlam, which we use in its original form up to minor cosmetic changes. 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 use of this library is recommended as a replacement for the ANSI C rand() and srand() functions, particularly in simulation applications where the statistical 'goodness' of the random number generator is important. The library supplies 256 streams of random numbers; use SelectStream(s) to switch between streams indexed s = 0,1,...,255. 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: The generator used in this library is a so-called 'Lehmer random number generator' which returns a pseudo-random number uniformly distributed 0.0 and 1.0. The period is (m - 1) where m = 2,147,483,647 and the smallest and largest possible values are (1 / m) and 1 - (1 / m) respectively. For more details see: "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 C implementation adapted from Peter's Perl version Regarding 3), found as code example in Wikipedia libFAUDES 2.28a --- 2016.09.13 --- c++ api documentaion by doxygen |