1 #include <../../nrnconf.h> 41 #define dmaxuint 4294967295. 106 virtual void reset() { ihigh_ = orig_; }
149 if (cnt_ == 0) { cnt_ = 0xffffffff; }
182 for (i = 0; i <
cnt; ++
i) {
199 gen =
new ACG(seed,size);
200 rand =
new Normal(0.,1.,gen);
219 unsigned long seed = 0;
248 unsigned long seed = 0;
270 unsigned long seed1 = 0;
271 unsigned long seed2 = 0;
296 return (
double)mcr->
orig_;
347 hoc_execerror(
"Random.seq() can only be used if the random generator was MCellRan4 or Random123", 0);
353 double s =
chkarg(1, 0., 17179869183.);
355 which = char(s - seq*4.);
360 return double(seq)*4. + double(which);
367 return (
double)mcr->
ihigh_;
371 if (r->
type_ != 4) {
return 0; }
377 if (r->
type_ != 4) {
return 0; }
393 return (
double)mcr->
seed();
402 return (*(x->
rand))();
407 return (*(r->
rand))();
437 return (*(x->
rand))();
451 return (*(x->
rand))();
466 return (*(x->
rand))();
481 return (*(x->
rand))();
495 return (*(x->
rand))();
509 double a2 =
chkarg(2, 0, 1);
512 return (*(x->
rand))();
526 double a1 =
chkarg(1, 0, 1);
529 return (*(x->
rand))();
545 return (*(x->
rand))();
559 return (*(x->
rand))();
575 return (*(x->
rand))();
590 return (*(x->
rand))();
600 for (i=0; i <
cnt; ++
i) {
static double r_hypergeo(void *r)
Rand * nrn_random_arg(int)
static double r_normal(void *r)
static double r_sequence(void *r)
static void * r_cons(Object *obj)
void nrn_random_reset(Rand *r)
void nrnran123_deletestream(nrnran123_State *s)
static double r_ACG(void *r)
virtual uint32_t asLong()
void nrnran123_getids3(nrnran123_State *s, uint32_t *id1, uint32_t *id2, uint32_t *id3)
declarePtrList(RandomPlayList, RandomPlay) implementPtrList(RandomPlayList
double nrn_random_pick(Rand *r)
static double r_play(void *r)
void nrn_notify_when_void_freed(void *p, Observer *ob)
check_obj_type(o, "SectionList")
static double r_repick(void *r)
nrnran123_State * nrnran123_newstream3(uint32_t id1, uint32_t id2, uint32_t id3)
void nrnran123_getseq(nrnran123_State *s, uint32_t *seq, char *which)
virtual void unref_deferred() const
static double r_negexp(void *r)
virtual double asDouble()
uint32_t nrnisaac_uint32_pick(void *v)
void nrnran123_setseq(nrnran123_State *s, uint32_t seq, char which)
static double r_weibull(void *r)
double * hoc_pgetarg(int narg)
uint32_t nrnran123_ipick(nrnran123_State *s)
void nrnisaac_init(void *v, unsigned long int seed)
#define implementPtrList(PtrList, T)
static double r_nrnran123(void *r)
static double r_lognormal(void *r)
static double r_MCellRan4(void *r)
static double r_binomial(void *r)
static Member_func r_members[]
void class2oc(const char *, void *(*cons)(Object *), void(*destruct)(void *), Member_func *, int(*checkpoint)(void **), Member_ret_obj_func *, Member_ret_str_func *)
int nrn_random_isran123(Rand *r, uint32_t *id1, uint32_t *id2, uint32_t *id3)
static double r_uniform(void *r)
static void r_destruct(void *r)
virtual double asDouble()
static double r_ran123_globalindex(void *r)
Rand(unsigned long seed=0, int size=55, Object *obj=NULL)
static double r_erlang(void *r)
double mcell_ran4a(uint32_t *high)
static double r_MLCG(void *r)
void hoc_execerror(const char *, const char *)
int nrn_random123_getseq(Rand *r, uint32_t *seq, char *which)
long nrn_get_random_sequence(Rand *r)
virtual double asDouble()
virtual uint32_t asLong()
void * nrnisaac_new(void)
static double r_Isaac64(void *r)
void nrn_notify_when_double_freed(double *p, Observer *ob)
MCellRan4(uint32_t ihigh=0, uint32_t ilow=0)
static RandomPlay RandomPlayList * random_play_list_
virtual uint32_t asLong()
static double r_discunif(void *r)
double nrnran123_dblpick(nrnran123_State *s)
int nrn_random123_setseq(Rand *r, uint32_t seq, char which)
void nrnran123_set_globalindex(uint32_t gix)
void nrn_notify_pointer_disconnect(Observer *ob)
static double r_poisson(void *r)
double nrnRan4dbl(uint32_t *idx1, uint32_t idx2)
void nrnisaac_delete(void *v)
RandomPlay(Rand *, double *)
uint32_t nrnran123_get_globalindex()
double nrnisaac_dbl_pick(void *v)
Object ** hoc_objgetarg(int)
void nrn_set_random_sequence(Rand *r, long seq)
Most of the Random123 C++ API is contained in the r123 namespace.
uint32_t mcell_iran4(uint32_t *high)
virtual void update(Observable *)
uint32_t nrnRan4int(uint32_t *idx1, uint32_t idx2)
double chkarg(int, double low, double high)
NrnRandom123(uint32_t id1, uint32_t id2, uint32_t id3=0)
static double r_geometric(void *r)