From db286e430d282d04e222a50cfca7875867b55df8 Mon Sep 17 00:00:00 2001 From: netheril96 Date: Mon, 4 Aug 2014 12:28:21 +0800 Subject: Fix and improve multiple places about random number generation and shuffling --- src/caffe/common.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/caffe/common.cpp') diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index 1810bb70..019370b1 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -26,6 +26,17 @@ shared_ptr Caffe::singleton_; // random seeding int64_t cluster_seedgen(void) { int64_t s, seed, pid; + FILE* f = fopen("/dev/urandom", "rb"); + if (f && fread(&seed, 1, sizeof(seed), f) == sizeof(seed)) { + fclose(f); + return seed; + } + + LOG(INFO) << "System entropy source not available, " + "using fallback algorithm to generate seed instead."; + if (f) + fclose(f); + pid = getpid(); s = time(NULL); seed = abs(((s * 181) * ((pid - 83) * 359)) % 104729); @@ -75,7 +86,7 @@ Caffe::RNG::RNG() : generator_(new Generator()) { } Caffe::RNG::RNG(unsigned int seed) : generator_(new Generator(seed)) { } Caffe::RNG& Caffe::RNG::operator=(const RNG& other) { - generator_.reset(other.generator_.get()); + generator_ = other.generator_; return *this; } -- cgit v1.2.3