summaryrefslogtreecommitdiffstats
path: root/contrib/lua-torch/torch7/lib/TH/THRandom.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/lua-torch/torch7/lib/TH/THRandom.h')
-rw-r--r--contrib/lua-torch/torch7/lib/TH/THRandom.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/contrib/lua-torch/torch7/lib/TH/THRandom.h b/contrib/lua-torch/torch7/lib/TH/THRandom.h
new file mode 100644
index 000000000..28a14c0d7
--- /dev/null
+++ b/contrib/lua-torch/torch7/lib/TH/THRandom.h
@@ -0,0 +1,81 @@
+#ifndef TH_RANDOM_INC
+#define TH_RANDOM_INC
+
+#include "THGeneral.h"
+
+#define _MERSENNE_STATE_N 624
+#define _MERSENNE_STATE_M 397
+/* A THGenerator contains all the state required for a single random number stream */
+typedef struct THGenerator {
+ /* The initial seed. */
+ unsigned long the_initial_seed;
+ int left; /* = 1; */
+ int seeded; /* = 0; */
+ unsigned long next;
+ unsigned long state[_MERSENNE_STATE_N]; /* the array for the state vector */
+ /********************************/
+
+ /* For normal distribution */
+ double normal_x;
+ double normal_y;
+ double normal_rho;
+ int normal_is_valid; /* = 0; */
+} THGenerator;
+
+#define torch_Generator "torch.Generator"
+
+/* Manipulate THGenerator objects */
+TH_API THGenerator * THGenerator_new(void);
+TH_API THGenerator * THGenerator_copy(THGenerator *self, THGenerator *from);
+TH_API void THGenerator_free(THGenerator *gen);
+
+/* Checks if given generator is valid */
+TH_API int THGenerator_isValid(THGenerator *_generator);
+
+/* Initializes the random number generator from /dev/urandom (or on Windows
+platforms with the current time (granularity: seconds)) and returns the seed. */
+TH_API unsigned long THRandom_seed(THGenerator *_generator);
+
+/* Initializes the random number generator with the given long "the_seed_". */
+TH_API void THRandom_manualSeed(THGenerator *_generator, unsigned long the_seed_);
+
+/* Returns the starting seed used. */
+TH_API unsigned long THRandom_initialSeed(THGenerator *_generator);
+
+/* Generates a uniform 32 bits integer. */
+TH_API unsigned long THRandom_random(THGenerator *_generator);
+
+/* Generates a uniform random number on [0,1[. */
+TH_API double THRandom_uniform(THGenerator *_generator, double a, double b);
+
+/** Generates a random number from a normal distribution.
+ (With mean #mean# and standard deviation #stdv >= 0#).
+*/
+TH_API double THRandom_normal(THGenerator *_generator, double mean, double stdv);
+
+/** Generates a random number from an exponential distribution.
+ The density is $p(x) = lambda * exp(-lambda * x)$, where
+ lambda is a positive number.
+*/
+TH_API double THRandom_exponential(THGenerator *_generator, double lambda);
+
+/** Returns a random number from a Cauchy distribution.
+ The Cauchy density is $p(x) = sigma/(pi*(sigma^2 + (x-median)^2))$
+*/
+TH_API double THRandom_cauchy(THGenerator *_generator, double median, double sigma);
+
+/** Generates a random number from a log-normal distribution.
+ (#mean > 0# is the mean of the log-normal distribution
+ and #stdv# is its standard deviation).
+*/
+TH_API double THRandom_logNormal(THGenerator *_generator, double mean, double stdv);
+
+/** Generates a random number from a geometric distribution.
+ It returns an integer #i#, where $p(i) = (1-p) * p^(i-1)$.
+ p must satisfy $0 < p < 1$.
+*/
+TH_API int THRandom_geometric(THGenerator *_generator, double p);
+
+/* Returns true with probability $p$ and false with probability $1-p$ (p > 0). */
+TH_API int THRandom_bernoulli(THGenerator *_generator, double p);
+#endif