6 #ifndef TAPKEE_DEFINES_RANDOM_H_
7 #define TAPKEE_DEFINES_RANDOM_H_
18 #ifdef CUSTOM_UNIFORM_RANDOM_INDEX_FUNCTION
19 return CUSTOM_UNIFORM_RANDOM_INDEX_FUNCTION % std::numeric_limits<IndexType>::max();
32 #ifdef CUSTOM_UNIFORM_RANDOM_FUNCTION
33 return CUSTOM_UNIFORM_RANDOM_FUNCTION;
35 return std::rand()/((double)RAND_MAX+1);
41 #ifdef CUSTOM_GAUSSIAN_RANDOM_FUNCTION
42 return CUSTOM_GAUSSIAN_RANDOM_FUNCTION;
46 x = 2*(std::rand()/((double)RAND_MAX+1)) - 1;
47 y = 2*(std::rand()/((double)RAND_MAX+1)) - 1;
48 radius = (x * x) + (y * y);
49 }
while ((radius >= 1.0) || (radius == 0.0));
50 radius = std::sqrt(-2 * std::log(radius) / radius);
void random_shuffle(RAI first, RAI last)
ScalarType uniform_random()
double ScalarType
default scalar value (can be overrided with TAPKEE_CUSTOM_INTERNAL_NUMTYPE define) ...
int IndexType
indexing type (non-overridable) set to int for compatibility with OpenMP 2.0
ScalarType gaussian_random()
IndexType uniform_random_index_bounded(IndexType upper)
IndexType uniform_random_index()