Генерация равномерно распределенных случайных чисел (0,1) - страница 11
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
на пятом форуме есть свежая статья на эту тему, там все для начинающих с картинками и примерами
Спасибо. Уже прочитал осталось 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;
}
Интересно, насколько это сократит время.
Спасибо. Сейчас проверим(позже). Сейчас ищу кол-во совпадений на 1000000 ranD(0,32)...
Спасибо. Сейчас проверим(позже). Сейчас ищу кол-во совпадений на 1000000 ranD(0,32)...Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами 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 ranD(0,32)