У меня все нормально, тип только не понятно какой выдает - целые 2-байтные положительные, но псевдослучайные. Билд, правда 151, не обновлял еще.
int вроде по определению MQL4 4-байтный, да еще и с отрицательными значениями. Да, не понятно как работает. В справке нет описания.
Вам нужно сначала установить начальное значение этому самому генератору. для этого есть функция MathSrand
MathSrand(LocalTime());
Спасибо. А это достаточно сделать один раз, или, если в разных часях эксперта вызывается, надо каждый раз устанавливать?
достаточно 1 раз при инициализации
попробовал.....
получается, что "случайным" число становится только за счёт изменения точки отсчёта ( в вашем примере - LocalTime() ). Когда вставляешь
получается, что "случайным" число становится только за счёт изменения точки отсчёта ( в вашем примере - LocalTime() ). Когда вставляешь
MathSrand(123);
MathRand() постоянно возвращает одно и то же число...
С таким же успехом можно пользоваться просто локалтайм-ом........
komposter,
это стандартное поведение, так же как в С.
вы никогда не задумывались что людям нужны предопределенные случайные последовательности?
это стандартное поведение, так же как в С.
вы никогда не задумывались что людям нужны предопределенные случайные последовательности?
всё правильно. это и называется "псевдослучайным числом". реализация генератора действительно случайных чисел очень дорога. и по времени, и по деньгам.
локал-таймом в чистом виде пользоваться нельзя, потому, что его значение возрастает по известному закону. но в качестве стартовой точки его очень часто и используют.
локал-таймом в чистом виде пользоваться нельзя, потому, что его значение возрастает по известному закону. но в качестве стартовой точки его очень часто и используют.
попробовал.....
получается, что "случайным" число становится только за счёт изменения точки отсчёта ( в вашем примере - LocalTime() ). Когда вставляешь
получается, что "случайным" число становится только за счёт изменения точки отсчёта ( в вашем примере - LocalTime() ). Когда вставляешь
MathSrand(123);
MathRand() постоянно возвращает одно и то же число...
С таким же успехом можно пользоваться просто локалтайм-ом........
Для генерации обычно используют две функции rand() и srand().
Вот их описания (из MSDN от Visual C++):
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand.
The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.
И пример:
/* RAND.C: This program seeds the random-number generator * with the time, then displays 10 random integers. */ #include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) { int i; /* Seed the random-number generator with current time so that * the numbers will be different every time we run. */ srand( (unsigned)time( NULL ) ); /* Display 10 numbers. */ for( i = 0; i < 10;i++ ) printf( " %6d\n", rand() ); } Output 6929 8026 21987 30734 20587 6699 22034 25051 7988 10104
Slawa, Renat, Arthur, огромное спасибо!
У меня и проблемы как таковой не было, просто мысли вслух высказал...
У меня и проблемы как таковой не было, просто мысли вслух высказал...

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
_________________
расскажите, плз, как должен работать "Генератор псевдослучайных чисел" (pseudo random number) ?