You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
583 B
23 lines
583 B
#pragma once
|
|
|
|
#include <rngxx.hpp>
|
|
|
|
#include "internal/seed.h"
|
|
|
|
namespace rng
|
|
{
|
|
struct sm64 final : public Random
|
|
{
|
|
inline sm64() : m_generator(seed::splitmix64::random()){}
|
|
inline sm64(const seed::splitmix64& g) : m_generator(g){}
|
|
explicit inline sm64(seed_gen<u64>& generator) : m_generator(generator){}
|
|
inline sm64(u64 seed) : Random(), m_generator(seed){}
|
|
|
|
RNG_OVERRIDE(inline u64, next_u64, ()) { return m_generator.generate_seed(); }
|
|
protected:
|
|
inline f64 _sample() override { return m_generator.generate_f64(); }
|
|
private:
|
|
seed::splitmix64 m_generator;
|
|
};
|
|
}
|