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 の方法)
- 戻り値: result_type [a, b]
- 計算量: 期待 $O(1)$
random
constexpr double random() noexcept;
0.0以上1.0未満の浮動小数点数を生成
- 戻り値: double [0, 1)
- 計算量: $O(1)$