Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1260

 
Vitaly Muzichenko:

Pode dizer-me o que devo escrever para obter números aleatórios de 6 dígitos?

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:

E qual foi o resultado? Não estou a reclamar infalibilidade...))

Como resultado, tive de o deixar porque havia menos de 6 caracteres

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

Igor Makanu:

Vou experimentá-lo esta noite.

 
Igor Makanu:

Os de 5 dígitos passam por


Seja como for, problema resolvido, obrigado a todos!

 
Vitaly Muzichenko:

Os números de 5 dígitos estão a passar

Sim, eles irão.

pensava que era apenas um desafio de 6 dígitos.

como uma opção para gerar o primeiro dígito com rand()%10

 
Igor Makanu:

Sim, irão.

pensava que a tarefa não era mais do que 6 dígitos

como opção para gerar o primeiro carácter com rand()%10

Volte a colocá-lo no código.

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

basta, a função é chamada algumas vezes por dia de qualquer forma

 
Vitaly Muzichenko:

Volte a colocá-lo no código.

chega, a função é chamada algumas vezes por dia de qualquer forma.

não

forma mais simples

escreva-o dessa forma

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

não

É mais simples do que isso.

por isso, escreva-o.

Bem, poderia marcar aleatoriamente cada sinal (seis peças) e recolher o número)

 
Valeriy Yastremskiy:

Bem, poderia marcar aleatoriamente cada carácter (seis peças) e recolher o número)

Sim, mas provavelmente seria um mau rand - precisa de testar

Penso que é mais fácil mudar rand() de 16 bits e adicionar mais rand() aos bits baixos = obter 32 bits - o meu exemplo rand_32()

 
Igor Makanu:

Sim, mas provavelmente seria um mau rand - Preciso de testar

Penso que é mais fácil deslocar um rand() de 16 bits e adicionar outro rand() aos bits baixos = obter um rand_32() de 32 bits - o meu exemplo

Concordo. Ou testar ou afinar a lógica do gerador, que normalmente é mais cara do que a tarefa.

 
Valeriy Yastremskiy:

Concordo. Ou é testar ou mexer na lógica do gerador, que normalmente é mais cara do que a tarefa em mãos.

)