Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1260

 
Vitaly Muzichenko:

Puoi dirmi cosa scrivere per ottenere numeri casuali a 6 cifre?

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 è stato il risultato? Non pretendo l'infallibilità...))

Di conseguenza ho dovuto lasciarlo perché c'erano meno di 6 caratteri

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

Igor Makanu:

Lo proverò stasera.

 
Igor Makanu:

Quelli a 5 cifre sfuggono


Comunque, problema risolto, grazie a tutti!

 
Vitaly Muzichenko:

Le cifre a 5 cifre stanno sfuggendo

Sì, lo faranno.

Pensavo fosse solo una sfida a 6 cifre.

come opzione per generare la prima cifra con rand()%10

 
Igor Makanu:

Sì, lo faranno.

pensato che il compito è solo non più di 6 cifre

come opzione per generare il primo carattere con rand()%10

Rimettilo nel codice.

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

è sufficiente, la funzione viene chiamata un paio di volte al giorno comunque

 
Vitaly Muzichenko:

Rimettilo nel codice.

è sufficiente, la funzione viene chiamata comunque un paio di volte al giorno.

no

modo più semplice

scrivilo in questo modo

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

no

È più semplice di così.

quindi scrivilo.

Beh, si potrebbe comporre a caso ogni segno (sei pezzi) e raccogliere il numero)

 
Valeriy Yastremskiy:

Beh, si potrebbe chiamare a caso ogni personaggio (sei pezzi) e raccogliere il numero)

Sì, ma probabilmente sarebbe un cattivo rand - è necessario testare

Penso che sia più facile spostare rand() a 16 bit e aggiungere più rand() ai bit bassi = ottenere 32 bit - il mio esempio rand_32()

 
Igor Makanu:

Sì, ma probabilmente sarebbe un cattivo rand - ho bisogno di testare

Penso che sia più facile spostare una rand() a 16 bit e aggiungere un'altra rand() ai bit bassi = ottenere una rand_32() a 32 bit - il mio esempio

Sono d'accordo: o testate o modificate la logica del generatore, che di solito è più costosa del compito.

 
Valeriy Yastremskiy:

Sono d'accordo, si tratta di fare dei test o di armeggiare con la logica del generatore, che di solito è più costoso del compito da svolgere.

)