23 #if ! defined (octave_oct_rand_h)
24 #define octave_oct_rand_h 1
26 #include "octave-config.h"
48 static bool instance_ok (
void);
53 return instance_ok () ? instance->do_seed ()
61 instance->do_seed (s);
68 instance->do_reset ();
74 return instance_ok () ? instance->do_state (
d) :
ColumnVector ();
82 instance->do_state (s,
d);
89 instance->do_reset (d);
95 return instance_ok () ? instance->do_distribution () :
"";
103 instance->do_distribution (d);
109 instance->do_uniform_distribution ();
115 instance->do_normal_distribution ();
121 instance->do_exponential_distribution ();
127 instance->do_poisson_distribution ();
133 instance->do_gamma_distribution ();
139 return instance_ok () ? instance->do_scalar (
a)
146 return instance_ok () ? instance->do_float_scalar (
a)
153 return instance_ok () ? instance->do_vector (n,
a) :
Array<double> ();
159 return instance_ok () ? instance->do_float_vector (n,
a) :
Array<float> ();
166 return instance_ok () ? instance->do_nd_array (dims,
a) :
NDArray ();
173 return instance_ok () ? instance->do_float_nd_array (dims,
a)
204 double do_seed (
void);
207 void do_seed (
double s);
228 void do_uniform_distribution (
void);
230 void do_normal_distribution (
void);
232 void do_exponential_distribution (
void);
234 void do_poisson_distribution (
void);
236 void do_gamma_distribution (
void);
239 double do_scalar (
double a = 1.);
242 float do_float_scalar (
float a = 1.);
260 void initialize_ranlib_generators (
void);
262 void initialize_mersenne_twister (
void);
266 void save_state (
void);
272 void switch_to_generator (
int dist);
static void exponential_distribution(void)
static ColumnVector state(const std::string &d="")
static void cleanup_instance(void)
static Array< double > vector(octave_idx_type n, double a=1.0)
static float float_scalar(float a=1.0)
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
calling an anonymous function involves an overhead quite comparable to the overhead of an m file function Passing a handle to a built in function is because the interpreter is not involved in the internal loop For a
static void seed(double s)
static void gamma_distribution(void)
std::map< int, ColumnVector > rand_states
static void state(const ColumnVector &s, const std::string &d="")
static void poisson_distribution(void)
the exceeded dimensions are set to if fewer subscripts than dimensions are the exceeding dimensions are merged into the final requested dimension For consider the following dims
static NDArray nd_array(const dim_vector &dims, double a=1.0)
static FloatNDArray float_nd_array(const dim_vector &dims, float a=1.0)
static octave_rand * instance
static void normal_distribution(void)
OCTAVE_EXPORT octave_value_list or N dimensional array whose elements are all equal to the IEEE symbol NaN(Not a Number).NaN is the result of operations which do not produce a well defined 0 result.Common operations which produce a NaN are arithmetic with infinity ex($\infty-\infty $)
static std::string distribution(void)
static void distribution(const std::string &d)
static double scalar(double a=1.0)
Vector representing the dimensions (size) of an Array.
static Array< float > float_vector(octave_idx_type n, float a=1.0)
static void uniform_distribution(void)
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
static void reset(const std::string &d)