/usr/include/JAGS/rng/RNG.h is in jags 4.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #ifndef RNG_H_
#define RNG_H_
#include <string>
#include <vector>
namespace jags {
/**
* Abstract class for a psuedo random number generator
*
* @short Random Number Generator
*/
struct RNG
{
const std::string _name;
RNG(std::string const &name);
virtual ~RNG();
/**
* Sets the state of the RNG given a single integer value. This
* may be used to set the state using, for example, the current time
* stamp.
*
* @param seed Unsigned integer from which the initial state is generated.
* The RNG must be able to construct a valid initial state from any
* unsigned integer
*/
virtual void init(unsigned int seed) = 0;
/**
* Returns the internal state of the RNG as a vector of integers
*
* @state Vector of integers that is overwritten with the RNG state.
*/
virtual void getState(std::vector<int> &state) const = 0;
/**
* Sets the internal state of the RNG given a vector of integers
*
* @state Vector of integers describing the internal state of the RNG.
* Only vectors previously derived from a call to getState should be used
* as input to setState. Other values are not guaranteed to give a valid
* state.
*/
virtual bool setState(std::vector<int> const &state) = 0;
/**
* Generates a random value with a uniform distribution on (0,1)
*/
virtual double uniform() = 0;
/**
* Generates a standard normal random value
*/
virtual double normal() = 0;
/**
* Generates are andom value with an exponential distribution
*/
virtual double exponential() = 0;
/**
* This static utility function may be used by an RNG object to coerce
* values in the range [0,1] to the open range (0,1)
*/
static double fixup(double x);
/**
* Returns the name of the RNG
*/
std::string const &name() const;
static double uniform(void *);
static double normal(void *);
static double exponential(void *);
};
} /* namespace jags */
#endif /* RNG_H_ */
|