OpenCV 4.5.3(日本語機械翻訳)
|
Random Number Generator [詳解]
#include <core.hpp>
公開型 |
|
enum | { UNIFORM = 0 , NORMAL = 1 } |
公開メンバ関数 |
|
RNG () | |
コンストラクタ[【詳解】(英語]
|
|
RNG (uint64 state) | |
unsigned | next () |
operator uchar () | |
operator schar () | |
operator ushort () | |
operator short () | |
operator unsigned () | |
operator int () | |
operator float () | |
operator double () | |
unsigned | operator() () |
は,[0, N)から一様にサンプリングされたランダムな整数を返します。[【詳解】(英語]
|
|
unsigned | operator() (unsigned N) |
int | uniform (int a, int b) |
は,[a,b] の範囲から一様に分布する整数の乱数を返します.[【詳解】(英語]
|
|
float | uniform (float a, float b) |
double | uniform (double a, double b) |
void | fill (InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange=false) |
配列を乱数で埋めます。[【詳解】(英語]
|
|
double | gaussian (double sigma) |
ガウス分布からサンプリングされた次の乱数を返します。[【詳解】(英語]
|
|
bool | operator== (const RNG &other) const |
公開変数類 |
|
uint64 | state |
乱数ジェネレータ
乱数発生器です。これは,状態(現在は 64 ビットの整数)をカプセル化し,スカラーの乱数値を返したり,乱数値で配列を埋めたりするメソッドを備えています.現在は,一様分布とガウス分布(正規分布)をサポートしています.このジェネレータは,G. Marsaglia (http://en.wikipedia.org/wiki/Multiply-with-carry). ガウス分布の乱数は,Ziggurat アルゴリズムを用いて生成されます (http://en.wikipedia.org/wiki/Ziggurat_algorithm)を使用しています。
cv::RNG::RNG | ( | ) |
コンストラクタ
これらはRNGコンストラクタです。最初の形式では,あらかじめ定義された値(現在の実装では2**32-1に等しい値)を状態に設定します。2番目の形式では,状態を指定された値に設定します。state=0 を指定した場合は,すべてがゼロで構成される特異な乱数列を避けるために,コンストラクタは上記のデフォルト値を使用します。
cv::RNG::RNG | ( | uint64 | state | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
state | の初期化に使われる 64 ビットの値です。RNG. |
void cv::RNG::fill | ( | InputOutputArray | mat, |
int | distType, | ||
InputArray | a, | ||
InputArray | b, | ||
bool |
saturateRange
=
false |
||
) |
配列を乱数で埋めます。
mat | 2次元またはN次元の行列.現在,4チャンネル以上の行列はこのメソッドではサポートされていません.Mat::reshapeを回避策として利用できます. |
distType | 分布の種類,RNG::UNIFORM または RNG::NORMAL. |
a | 1番目の分布パラメータ.一様分布の場合は,包含的な下限値,正規分布の場合は,平均値を表します. |
b | 2番目の分布パラメータ:一様分布の場合は,非包含的な上限値,正規分布の場合は,標準偏差(標準偏差行列の対角線,あるいは完全な標準偏差行列)を表します. |
saturateRange | SaturateRange=false の場合,このメソッドは元の範囲 [a, b] に一様に分布する乱数を生成した後,それらを飽和させます.
theRNG().fill(mat_8u, RNG::UNIFORM, -DBL_MAX, DBL_MAX) というのも,範囲 (0, 255) は [-DBL_MAX, DBL_MAX] よりもかなり小さいからです. |
それぞれのメソッドは,指定された分布からのランダムな値で行列を埋めます.新しい数値が生成されると,それに応じてRNG状態が適宜更新されます.マルチチャンネル画像の場合,各チャンネルは独立して埋められますが,これはRNGは,非対角共分散行列を持つ多次元ガウス分布から直接サンプルを生成することはできません.そのため,このメソッドでは,平均が0で共分散行列が1である多次元標準ガウス分布からサンプルを生成し,それを transform で変換することで,指定したガウス分布からサンプルを得ます.
double cv::RNG::gaussian | ( | double | sigma | ) |
ガウス分布からサンプリングされた次の乱数を返します。
sigma | 分布の標準偏差です。 |
このメソッドは,MWCアルゴリズムを使って状態を変換し,ガウス分布N(0,sigma)から次の乱数を返します.つまり,返された乱数の平均値はゼロ,標準偏差は指定されたシグマとなります.
unsigned cv::RNG::next | ( | ) |
このメソッドは,MWC アルゴリズムを使用して状態を更新し,次の 32 ビット乱数を返します.
cv::RNG::operator double | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator float | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator int | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator schar | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator short | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator uchar | ( | ) |
各メソッドは,MWC アルゴリズムを使用して状態を更新し,指定された型の次の乱数を返します。整数型の場合は,指定された型で利用可能な値の範囲内の数値が返されます。浮動小数点型の場合,返される値は [0,1] の範囲です。
cv::RNG::operator unsigned | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
cv::RNG::operator ushort | ( | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
unsigned cv::RNG::operator() | ( | ) |
は,[0, N)から一様にサンプリングされたランダムな整数を返します。
これらのメソッドは,MWCアルゴリズムを用いて状態を変換し,次の乱数を返します。最初の形式は以下と同等ですRNG::next. 第2の形式は,乱数をモジュロNで返すので,結果が[0, N)の範囲にあることを意味します.
unsigned cv::RNG::operator() | ( | unsigned | N | ) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
N | 返される乱数の上側の非包含境界。 |
double cv::RNG::uniform | ( | double | a, |
double | b | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
float cv::RNG::uniform | ( | float | a, |
float | b | ||
) |
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
int cv::RNG::uniform | ( | int | a, |
int | b | ||
) |
は,[a,b] の範囲から一様に分布する整数の乱数を返します.
これらのメソッドは,MWC アルゴリズムを用いて状態を変換し,入力パラメータの型から推測される,指定された型の次の一様分布乱数を [a, b) の範囲から返します.次のサンプルで示されるニュアンスがあります.
の結果を代入する変数の型は,コンパイラでは考慮されません.RNG::uniform. コンパイラにとって重要なのは,a と b のパラメータの型だけです.したがって,浮動小数点数の乱数が欲しいが,範囲の境界が整数である場合は,定数であれば最後にドットを付けるか,上の a1 の初期化のように明示的な型キャスト演算子を使用します.
a | 返される乱数の下限値を指定します。 |
b | 返される乱数の上側の非包含境界。 |