Можно ли рандомизатор сделать ещё более рандомным? - страница 2

 
Maxim Kuznetsov #:

Как накосячили ?

void OnInit() {

tick=GetTickCount(); // должен давать близкие (вообще идентичные) значения в проходах оптимизатора.

}

вот если он сильно разный и действительно в оптимизаторе показывает "кол-во тиков (мсек) со старта запустившей программы" - вот это будет косяк.

Какой же это косяк, когда именно такой результат от него ожидается?
Это GetMicrosecondCount() возвращает значения от старта эксперта.
 
Sergey Gridnev #:
Какой же это косяк, когда именно такой результат от него ожидается?
Это GetMicrosecondCount() возвращает значения от старта эксперта.

оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.

GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.

и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.

иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"

 
Спасибо. Поэкспериментирую.
 
Maxim Kuznetsov #:

оптимизатор(и тестер) делает виртуальное окружение.Как-будто бы софт только-что запущен очень давно. И подаёт котировки/эвенты на вход как новое.

GetTickCount, GetMicrosecondCount должны соответствовать. Экземпляры запускаются в разных агентах. Поэтому на вхоже OnInit в оптимизации должны быть идентичны. Иначе косяк.

и тут просто философски-технический вопрос - для многих алгоритмов необходим рандом, вне зависимости от проходов, виртуального или реального времени, момента запуска MT, он должен остаться случайным.

иначе алгоритмы а-ля Монте-Карло покажут дырку от бублика а не результат "оптимизаций"

Если всё так плохо, можно попробовать снять значение счётчика микросекунд в миллисекундном либо в секундном таймере. Микросекунды должны "плавать".
 
Replikant_mih: 

Посмотрите мои эксперименты https://www.mql5.com/ru/blogs/post/735953

Rand 0 ... Max Int с равномерным распределением
Rand 0 ... Max Int с равномерным распределением
  • www.mql5.com
Потребовалась функция ГСЧ с гнерацией числа Int от 0 до любого значения. Получилась такая функция. Думаю распределение получилось равномерным. int RandomInteger(int max_vl){return
Причина обращения: