00001 /* hashRandom.cc 00002 */ 00003 #include "osl/hash/hashRandomPair.h" 00004 #include <random> 00005 00006 std::pair<char,char> 00007 osl::hash::HashRandomPair::table[osl::hash::HashRandomPair::Length]; 00008 bool osl::hash::HashRandomPair::is_initialized = 0; 00009 00010 void osl::hash::HashRandomPair::setUp(unsigned int seed, unsigned int prob100) 00011 { 00012 std::mt19937 mt19937(seed); 00013 std::uniform_int_distribution<int> uniform100(0, 99); 00014 00015 for (size_t i=0; i<Length; ++i) { 00016 const unsigned int u = uniform100(mt19937); 00017 if (u < prob100) 00018 table[i] = std::make_pair(1,0); 00019 else if (u < prob100*2) 00020 table[i] = std::make_pair(0,1); 00021 else 00022 table[i] = std::make_pair(0,0); 00023 } 00024 is_initialized = 1; 00025 } 00026 00027 00028 // ;;; Local Variables: 00029 // ;;; mode:c++ 00030 // ;;; c-basic-offset:2 00031 // ;;; End: