Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1260

 
Vitaly Muzichenko:

Подскажите, что прописать, чтобы получать random 6-значные числа?

void OnStart()
{
   srand(GetTickCount());
   for(int i = 0; i < 10; i++)
   {
      uint random = rand_32() % 1000000;  // %1000000 --> ограничим 6-ю знаками 
      printf("random = %u", random);
   }
}
//+------------------------------------------------------------------+
uint rand_32()
{
   return(((uint)rand()) << 16 | rand());
}
//+------------------------------------------------------------------+
 
Alexey Viktorov:

И что в результате получилось? Я ведь не претендую на непогрешимость…)))

В результате пришлось оставить, так как было и менее 6-ти знаков

if(v>=min && v<=max)

Igor Makanu:

Вечером попробую.

 
Igor Makanu:

Проскакивают 5-значные


Впрочем, проблема исчерпана, всем спасибо!

 
Vitaly Muzichenko:

Проскакивают 5-значные

да будут

подумал, что задача только не больше 6-ти знаков

как вариант первый знак генерировать с помощью rand()%10

 
Igor Makanu:

да будут

подумал, что задача только не больше 6-ти знаков

как вариант первый знак генерировать с помощью rand()%10

Снова поставил в код

if(v>=min && v<=max)

этого достаточно, функция всё-равно вызывается пару раз в сутки

 
Vitaly Muzichenko:

Снова поставил в код

этого достаточно, функция всё-равно вызывается пару раз в сутки

нет

проще можно

так напишите

uint random = (rand() % 9 + 1) * 1000000 +   // первый знак
                    rand_32() % 100000;      // ограничим 5-ю знаками
 
Igor Makanu:

нет

проще можно

так напишите

Ну так можно каждый знак (шесть штук) рандомно набрать и число собрать)

 
Valeriy Yastremskiy:

Ну так можно каждый знак (шесть штук) рандомно набрать и число собрать)

да, но наверное плохой rand получится - тестить нужно

думаю, все таки проще 16-битный rand() сдвинуть и добавить в младшие разряды еще rand() = получить 32-битный - мой пример rand_32()

 
Igor Makanu:

да, но наверное плохой rand получится - тестить нужно

думаю, все таки проще 16-битный rand() сдвинуть и добавить в младшие разряды еще rand() = получить 32-битный - мой пример rand_32()

Согласен. либо тестить либо логику генератора ковырять, что обычно дороже задачи.

 
Valeriy Yastremskiy:

Согласен. либо тестить либо логику генератора ковырять, что обычно дороже задачи.

Причина обращения: