Program Listing for File rng_engine.h

Return to documentation for file (src/data/rng_engine.h)

#pragma once

#include <random>
#include <sstream>

#include "common/config.h"

namespace marian {
namespace data {

class RNGEngine {
protected:
  std::mt19937 eng_;

public:
  RNGEngine() : eng_((unsigned int)Config::seed) {}
  RNGEngine(size_t seed) : eng_((unsigned int)seed) {}

  std::string getRNGState() {
    std::ostringstream oss;
    oss << eng_;
    return oss.str();
  }

  void setRNGState(std::string engineState) {
    std::istringstream iss(engineState);
    iss >> eng_;
  }
};
}  // namespace data
}  // namespace marian