Questions des débutants MQL5 MT5 MetaTrader 5 - page 1260

 
Vitaly Muzichenko:

Pouvez-vous me dire ce qu'il faut écrire pour obtenir des nombres aléatoires à 6 chiffres ?

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:

Et quel a été le résultat ? Je ne prétends pas à l'infaillibilité...))

En conséquence, j'ai dû le laisser car il y avait moins de 6 caractères.

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

Igor Makanu:

Je vais essayer ce soir.

 
Igor Makanu:

Ceux à 5 chiffres passent à travers


Quoi qu'il en soit, le problème est résolu, merci à tous !

 
Vitaly Muzichenko:

Les chiffres à 5 chiffres passent à la trappe

Oui, ils le feront.

Je pensais que c'était seulement un défi à 6 chiffres.

comme option pour générer le premier chiffre avec rand()%10

 
Igor Makanu:

Oui, ils le feront.

pensant que la tâche ne comporte pas plus de 6 chiffres.

comme option pour générer le premier caractère avec rand()%10

Remettez-le dans le code.

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

c'estsuffisant, la fonction est appelée quelques fois par jour de toute façon

 
Vitaly Muzichenko:

Remettez-le dans le code.

c'estsuffisant, la fonction est appelée quelques fois par jour de toute façon.

pas de

moyen plus simple

écrivez-le de cette façon

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

pas de

C'est plus simple que ça.

alors écrivez-le.

Eh bien, vous pourriez composer au hasard chaque panneau (six pièces) et recueillir le numéro).

 
Valeriy Yastremskiy:

Eh bien, vous pourriez composer aléatoirement le numéro de chaque personnage (six pièces) et recueillir le numéro).

Oui, mais ce serait probablement un mauvais rand - il faut faire des tests.

Je pense qu'il est plus facile de décaler rand() de 16 bits et d'ajouter plus de rand() aux bits faibles = obtenir 32 bits - mon exemple rand_32()

 
Igor Makanu:

Oui, mais ce serait probablement un mauvais rand - je dois faire des tests.

Je pense qu'il est plus facile de décaler un rand() de 16 bits et d'ajouter un autre rand() aux bits de poids faible = obtenir un rand_32() de 32 bits - mon exemple

Je suis d'accord. Soit vous testez, soit vous modifiez la logique du générateur, ce qui est généralement plus coûteux que la tâche à accomplir.

 
Valeriy Yastremskiy:

Je suis d'accord, il s'agit soit de tester, soit de bricoler la logique du générateur, ce qui est généralement plus coûteux que la tâche à accomplir.

)