algo — C++23 日本語リファレンス GitHub

RandomEngineBase

クラス · 疑似乱数生成器の共通部分(CRTP)

template <class Derived, class State, std::unsigned_integral Result>
requires (std::numeric_limits<Result>::digits == 32 || std::numeric_limits<Result>::digits == 64)
struct RandomEngineBase;

概要

疑似乱数生成器の共通部分(CRTP)

派生型は constexpr result_type operator()() で state を進めて値を返す。

テンプレートパラメータ

名前 説明
Derived 派生型
State 内部状態の型
Result 生成結果の型(32 bit か 64 bit の符号なし整数)

メンバ関数

名前 説明 計算量
serialize 現在の状態を返す $O(1)$
deserialize 保存した状態を復元する $O(1)$
rand_range a以上b以下の整数を偏りなく生成する(Lemire の方法) 期待 $O(1)$
random 0.0以上1.0未満の浮動小数点数を生成 $O(1)$

演算子

名前 説明 計算量
operator== 状態が等しいか返す $O(1)$

静的メンバ関数

名前 説明 計算量
min 生成しうる最小値を返す $O(1)$
max 生成しうる最大値を返す $O(1)$

メンバ型

名前 説明 計算量
state_type 内部状態の型 型エイリアスで実行時計算量はない
result_type 生成結果の型 型エイリアスで実行時計算量はない

メンバの詳細

rand_range

constexpr result_type rand_range(result_type a, result_type b) noexcept;

a以上b以下の整数を偏りなく生成する(Lemire の方法)

random

constexpr double random() noexcept;

0.0以上1.0未満の浮動小数点数を生成