Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В сервисе Фриланс участвуют тысячи разработчиков. Присоединяйся!
Andrey Yukhno
366
Andrey Yukhno 2013.12.03 08:19 

Доброго всем времени суток!

У меня вопрос к специалиста по математическим функциям. Мне необходимо сгенерить в советнике ряд случайных чисел, но каждое число должно быть в интервале от 0 до 9.

Есть функции MathRand и MathSrand, но как с их помощью получить случайное число в интервале от 0 до 9 я понять не могу.

Подскажите, пожалуйста, как это сделать.

С уважением, Андрей.


Vitalie Postolache
11090
Vitalie Postolache 2013.12.03 08:51  

1. ввести простое условие "если полученное СЧ больше 9 - генерировать ещё раз".

o_O
Модератор
23306
o_O 2013.12.03 08:53  
Andrey916:

Доброго всем времени суток!

У меня вопрос к специалиста по математическим функциям. Мне необходимо сгенерить в советнике ряд случайных чисел, но каждое число должно быть в интервале от 0 до 9.

Есть функции MathRand и MathSrand, но как с их помощью получить случайное число в интервале от 0 до 9 я понять не могу.

Подскажите, пожалуйста, как это сделать.

С уважением, Андрей.


случайное число на диапазоне [0-9] = MathRand() % 10

то есть остаток от деления на 10.

этот остаток всегда будет в диапазоне от 0 до 9

Vitalie Postolache
11090
Vitalie Postolache 2013.12.03 08:54  
другой вариант - СЧ*9/32768 (на случай если дробный результат нужен).
Andrey Yukhno
366
Andrey Yukhno 2013.12.03 10:02  

evillive:
другой вариант - СЧ*9/32768 (на случай если дробный результат нужен).

Спасибо.

Я тоже немного подумал.

Вот мой вариант решения:

MathSrand(0);
string Per1 = DoubleToStr(MathRand(),0);
string Per2 = StringSubstr(Per1, StringLen(Per1)-1, 0);
Comment(Per2);

Здесь Per2 - это последняя цифра от случайного числа в текстовом формате.

Boris
3883
Boris 2013.12.03 11:29  
Andrey916:
Проверьте, что быстрее считает!
Vitalie Postolache
11090
Vitalie Postolache 2013.12.03 11:36  

Andrey916:


Я тоже немного подумал.

Вот мой вариант решения:

MathSrand(0);
string Per1 = DoubleToStr(MathRand(),0);
string Per2 = StringSubstr(Per1, StringLen(Per1)-1, 0);
Comment(Per2);

Здесь Per2 - это последняя цифра от случайного числа в текстовом формате.


Зачем DoubleToStr если там всегда целое число на выходе генератора?

MathSrand(0) будет давать предсказуемые результаты, лучше MathSrand(GetTickCount()).
o_O
Модератор
23306
o_O 2013.12.03 12:08  

Andrey916:

Я тоже немного подумал.

Вот мой вариант решения:

MathSrand(0);
string Per1 = DoubleToStr(MathRand(),0);
string Per2 = StringSubstr(Per1, StringLen(Per1)-1, 0);
Comment(Per2);

интересно,

это по вашему не одно и то же = MathRand() % 10

?

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий