Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
на пятом форуме есть свежая статья на эту тему, там все для начинающих с картинками и примерами
ありがとうございます。もう読んでしまったので、あとはVSのダウンロードを終わらせるだけです。:)doubleを 分割する操作もかなり遅いので、これをなくせばまだまだ高速化できます。例えば、こんな風に。
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
これならどれだけ速くなるんだろう。
Поскольку операция деления double тоже довольно медленная, то можно еще ускорить процедуру если избавиться от нее. Например так:
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
Интересно, насколько это сократит время.
ありがとうございます。後日)確認します。今度は100万回あたりのマッチング数を調べてみると......ranD(0.32)
Спасибо. Сейчас проверим(позже). Сейчас ищу кол-во совпадений на 1000000 ranD(0,32)...シーケンスの品質を確認するためには、以下のような簡単なテストが有効です。
ExcelやMatlabなどで座標軸を描き、ジェネレーターを起動し、以下の座標で点のマーキングを開始します。
(x1,x2), (x3,x4), (x5,x6), など,つまり横軸にはジェネレータで与えられた数値を,縦軸には必ず次のようなものを取る。このように,意図したPRNGサイクルの一部を実行することが望ましい(可能であれば)。
ジェネレーターの特性が「良好」であれば、正方形の周囲に等間隔でドットが配置され、目に見える構造の圧縮がない絵が見えるはずです。もし、目に見える規則性があれば、それはジェネレーターに不具合があることを意味し、そのデータ間には相関がある。
この方法の名前は覚えていません。研究所で教えてもらったのですが、いつもうまくいっています。そして、気の利いた統計手法では必ずしも検出できない、このような弱い相関関係もキャッチすることができる。使うことをお勧めします。MQLツールの最も簡単な使用方法は、CSVファイルを使用してからダイアグラムを作成することです。
Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
OpenOffice Calcがハングアップするんだけど、どうしよう。Поскольку операция деления double тоже довольно медленная, то можно еще ускорить процедуру если избавиться от нее. Например так:
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
Интересно, насколько это сократит время.
10000000 ranD(1,40) speed = 37.95500000 div=1/div
10000000 ranD(1,40) speed = 26.34800000 div=div*0.5
:)
Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
1x1の正方形を100の正方形で割ったプリミティブなもので、1000000のranD(0.32)でのヒットは以下のとおりです。
1000でranD(0,32)
:) 100,000 runD(0.32)の場合