Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1260

 
Vitaly Muzichenko:

¿Puedes decirme qué escribir para obtener números aleatorios 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:

¿Y cuál fue el resultado? No pretendo la infalibilidad...))

Como resultado tuve que dejarlo ya que había menos de 6 caracteres

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

Igor Makanu:

Lo probaré esta noche.

 
Igor Makanu:

Los de 5 dígitos se cuelan


En fin, problema resuelto, ¡gracias a todos!

 
Vitaly Muzichenko:

Las cifras de 5 dígitos se cuelan

Sí, lo harán.

pensaba que sólo era un reto de 6 dígitos.

como opción para generar el primer dígito con rand()%10

 
Igor Makanu:

Sí, lo harán.

pensó que la tarea no tiene más de 6 dígitos

como opción para generar el primer carácter con rand()%10

Vuelve a ponerlo en el código.

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

essuficiente, la función se llama un par de veces al día de todos modos

 
Vitaly Muzichenko:

Vuelve a ponerlo en el código.

essuficiente, la función se llama un par de veces al día de todos modos.

no

forma más sencilla

escríbalo así

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

no

Es más sencillo que eso.

así que escríbelo.

Bueno, podrías marcar al azar cada signo (seis piezas) y recoger el número)

 
Valeriy Yastremskiy:

Bueno, se podría aleatorizar cada personaje (seis piezas) y recoger el número)

Sí, pero probablemente sería un mal rand - usted necesita para probar

Creo que es más fácil desplazar 16 bits de rand() y añadir más rand() a los bits bajos = obtener 32 bits - mi ejemplo rand_32()

 
Igor Makanu:

Sí, pero probablemente sería un rango malo - Tengo que probar

Creo que es más fácil desplazar un rand() de 16 bits y añadir otro rand() a los bits bajos = obtener un rand_32() de 32 bits - mi ejemplo

Estoy de acuerdo. O se prueba o se ajusta la lógica del generador, lo que suele ser más caro que la tarea.

 
Valeriy Yastremskiy:

Estoy de acuerdo. O bien se hacen pruebas o se manipula la lógica del generador, lo que suele ser más caro que la tarea que se está llevando a cabo.

)

Razón de la queja: