summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/caffe/util/math_functions.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp
index 832f641c..3e27f8dd 100644
--- a/src/caffe/util/math_functions.cpp
+++ b/src/caffe/util/math_functions.cpp
@@ -402,9 +402,12 @@ void caffe_vRngUniform(const int n, Dtype* r,
boost::uniform_real<Dtype> random_distribution(
a, caffe_nextafter<Dtype>(b));
Caffe::random_generator_t &generator = Caffe::vsl_stream();
+ boost::variate_generator<Caffe::random_generator_t,
+ boost::uniform_real<Dtype> > variate_generator(
+ generator, random_distribution);
- for(int i = 0; i < n; i += 1) {
- r[i] = random_distribution(generator);
+ for (int i = 0; i < n; ++i) {
+ r[i] = variate_generator();
}
}
@@ -436,7 +439,7 @@ void caffe_vRngGaussian(const int n, Dtype* r, const Dtype a,
boost::normal_distribution<Dtype> > variate_generator(
generator, random_distribution);
- for(int i = 0; i < n; ++i) {
+ for (int i = 0; i < n; ++i) {
r[i] = variate_generator();
}
}
@@ -458,9 +461,12 @@ void caffe_vRngBernoulli(const int n, Dtype* r, const double p) {
// FIXME check if parameters are handled in the same way ?
boost::bernoulli_distribution<Dtype> random_distribution(p);
Caffe::random_generator_t &generator = Caffe::vsl_stream();
+ boost::variate_generator<Caffe::random_generator_t,
+ boost::bernoulli_distribution<Dtype> > variate_generator(
+ generator, random_distribution);
- for(int i = 0; i < n; i += 1) {
- r[i] = random_distribution(generator);
+ for (int i = 0; i < n; ++i) {
+ r[i] = variate_generator();
}
}