【MQL5】MathRand関数について

MQL5リファレンス
スポンサーリンク

関数の働き・役割

MathRand関数は、MQL5で使用される乱数生成関数です。この関数は、0から32767の範囲の整数を返します。乱数を使用することで、プログラムにランダム性を持たせ、さまざまなシミュレーションやアルゴリズムで利用することができます。

乱数とは?

乱数とは、規則性や予測不可能性を持つ数値のことです。サイコロの出目や、宝くじの当選番号などが代表的な例です。

コンピュータでは、真の乱数を生成することは難しいため、計算によって乱数のように見える数値(疑似乱数)を生成することが一般的です。

乱数は、シミュレーション、統計分析、暗号化、ゲームなど、様々な分野で活用されています。

関数の引数について

int MathRand();

MathRand関数引数を取りません。

MathRand関数の戻り値について

MathRand関数は、0から32767の範囲の整数を返します。この乱数は、プログラム内でランダムな要素を導入するために使用されます。

MathRand関数を使う際の注意点

MathRand関数を使用する際には、乱数シードを設定することが重要です。シードMathSrand関数を使用して設定します。同じシードを使用すると、同じ順序の乱数が生成されますので、異なるシードを使用することで異なる乱数の系列を生成できます。

また、MathRand関数の代わりにrand関数を使用することもできます。これにより、同様に乱数を生成することができます。

MathRand関数を使ったサンプルコード

以下に、MathRand関数を使用して0から6までのランダムな整数を生成するサンプルコードを示します。

void OnStart()
{
    // 乱数シードを現在の時刻で初期化
    MathSrand(TimeLocal());

    // 0から6までの乱数を生成
    int nshape = MathRand() % 7;

    // 生成された乱数をエキスパートログに出力
    Print("生成された乱数: ", nshape);
}

MathRand関数のサンプルコードに使われた関数や文法要素の簡単な解説

MathSrand関数は、乱数シードを設定します。シードを設定することで、乱数の系列を制御することができます。乱数シードとは、乱数生成器の初期値のことで、これを基に乱数が生成されます。異なるシードを使用すると異なる乱数の系列が生成され、同じシードを使用すると同じ系列の乱数が生成されます。

TimeLocal関数は、現在のローカル時間を返します。現在の時間は常に変動するため、これを乱数シードに使用することで、毎回異なるシードが設定され、結果として毎回異なる乱数が生成されます。

同じシード値を設定すると、生成される乱数の順序は毎回同じになります。例えば、シード値を12345に固定し、MathRand関数を3回呼び出すと、毎回同じ3つの乱数が順番に生成されます。以下のコードでは、MathRand関数により乱数シードを固定しているため、生成される乱数の順序が毎回同じになります。

void OnStart()
{
    MathSrand(12345); // シード値を固定
    int nshape1 = MathRand() % 7;
    int nshape2 = MathRand() % 7;
    int nshape3 = MathRand() % 7;
    Print("生成された乱数1: ", nshape1);
    Print("生成された乱数2: ", nshape2);
    Print("生成された乱数3: ", nshape3);
}

このコードを実行すると、nshape1、nshape2、nshape3は毎回同じ値になります。シード値が固定されているため、乱数生成器が同じ順序で乱数を生成するためです。

Print関数は、メッセージをエキスパートログに出力します。ここでは、生成された乱数を出力しています。

MathRand関数を使用することで、MQL5プログラムにランダム性を導入し、さまざまな応用が可能になります。

タイトルとURLをコピーしました