MathSrand
疑似乱数整数を生成する為のシードを設定します
関数書式:
void MathSrand(
int seed
);
■引数
引数名 |
初期値 |
I/O |
詳細 |
seed |
- |
In |
乱数のシード
|
■戻り値
無し
■備考
MathRand()関数は疑似乱数シーケンスを生成する為に使用されます。
MathSrand()関数で特定の値を設定する事によって、
常に同じ疑似乱数シーケンスを生成する事が出来ます。
常に違うシーケンスを使用するには、MathSrand()関数の引数に
GetTickCount()を渡して使います。
GetTickCount()はOS起動時間をmsec単位でカウントした値で、49日間(カウンタオーバーフロー)するまで同じ値を取得されるが無いので、
乱数シードに適しています。
TimeCurrent()はtick受信しない(例えば市場クローズしている週末や、極端に出来高が少ない状況)間は変化しないので乱数シードに使用するのは適切ではありません。
MathSrand()関数はsrand()と書く事も出来ます。
サンプルソース:
#property strict
void OnInit() {
MathSrand(1);
for( int i=0;i < 5 ; i++) {
printf( "シード1の疑似乱数(%d回目):%d",i+1,MathRand());
}
Print("\n")
MathSrand(2);
for( int i=0;i < 5 ; i++) {
printf( "シード2の疑似乱数(%d回目):%d",i+1,MathRand());
}
}
結果:
シード1の疑似乱数(1回目):41
シード1の疑似乱数(2回目):18467
シード1の疑似乱数(3回目):6334
シード1の疑似乱数(4回目):26500
シード1の疑似乱数(5回目):19169
シード2の疑似乱数(1回目):45
シード2の疑似乱数(2回目):29216
シード2の疑似乱数(3回目):24198
シード2の疑似乱数(4回目):17795
シード2の疑似乱数(5回目):29484
固定シードなので、常に上記結果になります。