Library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub ebi-fly13/Library

:heavy_check_mark: Random Number Generator
(utility/random_number_generator.hpp)

説明

整数の乱数生成機。

set_seed(seed)

シードを指定する。

get(a, b)

$[a, b)$ の範囲から一様乱数を生成する。

Required by

Verified with

Code

#pragma once

#include <cstdint>

#include <random>


namespace ebi {

struct random_number_generator {
    random_number_generator(int seed = -1) {
        if (seed < 0) seed = rnd();
        mt.seed(seed);
    }

    void set_seed(int seed) {
        mt.seed(seed);
    }

    template <class T> T get(T a, T b) {
        std::uniform_int_distribution<T> dist(a, b - 1);
        return dist(mt);
    }

  private:
    std::mt19937_64 mt;
    std::random_device rnd;
};

}  // namespace ebi
#line 2 "utility/random_number_generator.hpp"

#include <cstdint>

#include <random>


namespace ebi {

struct random_number_generator {
    random_number_generator(int seed = -1) {
        if (seed < 0) seed = rnd();
        mt.seed(seed);
    }

    void set_seed(int seed) {
        mt.seed(seed);
    }

    template <class T> T get(T a, T b) {
        std::uniform_int_distribution<T> dist(a, b - 1);
        return dist(mt);
    }

  private:
    std::mt19937_64 mt;
    std::random_device rnd;
};

}  // namespace ebi
Back to top page