ct2rs 0.8.2

Rust bindings for OpenNMT/CTranslate2
Documentation
#include "ctranslate2/random.h"

#include <atomic>

namespace ctranslate2 {

  constexpr unsigned int default_seed = static_cast<unsigned int>(-1);
  static std::atomic<unsigned int> g_seed(default_seed);

  void set_random_seed(const unsigned int seed) {
    g_seed = seed;
  }

  unsigned int get_random_seed() {
    return g_seed == default_seed ? std::random_device{}() : g_seed.load();
  }

  std::mt19937& get_random_generator() {
    static thread_local std::mt19937 generator(get_random_seed());
    return generator;
  }

}