Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1260

 
Vitaly Muzichenko:

Können Sie mir sagen, was ich schreiben muss, um zufällige 6-stellige Zahlen zu erhalten?

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:

Und was war das Ergebnis? Ich erhebe keinen Anspruch auf Unfehlbarkeit...))

Daher musste ich ihn verlassen, da er weniger als 6 Zeichen enthielt.

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

Igor Makanu:

Ich werde es heute Abend ausprobieren.

 
Igor Makanu:

Die 5-stelligen Ziffern schlüpfen durch


Wie auch immer, das Problem ist gelöst, vielen Dank an alle!

 
Vitaly Muzichenko:

Die 5-stelligen Zahlen sind durchgerutscht

Ja, das werden sie.

dachte, es sei nur eine 6-stellige Herausforderung.

als Option, um die erste Ziffer mit rand()%10 zu erzeugen

 
Igor Makanu:

Ja, das werden sie.

dachte, dass die Aufgabe nur nicht mehr als 6 Stellen umfasst

als Option, um das erste Zeichen mit rand()%10 zu erzeugen

Fügen Sie es wieder in den Code ein.

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

das reicht, die Funktion wird sowieso ein paar Mal am Tag aufgerufen

 
Vitaly Muzichenko:

Fügen Sie es wieder in den Code ein.

das reicht, die Funktion wird sowieso ein paar Mal am Tag aufgerufen.

keine

einfachere Art

schreiben Sie es so

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

keine

Es ist einfacher als das.

also schreiben Sie es auf.

Nun, Sie könnten jedes Zeichen (sechs Stück) nach dem Zufallsprinzip wählen und die Nummer sammeln)

 
Valeriy Yastremskiy:

Nun, du könntest jede Figur zufällig anwählen (sechs Stück) und die Nummer sammeln)

Ja, aber es wäre wahrscheinlich ein schlechter Rand - Sie müssen testen

Ich denke, es ist einfacher, 16-Bit rand() zu verschieben und mehr rand() zu den niedrigen Bits hinzuzufügen = 32-Bit zu erhalten - mein Beispiel rand_32()

 
Igor Makanu:

Ja, aber es wäre wahrscheinlich ein schlechter Rand - ich muss es testen.

Ich denke, es ist einfacher, ein 16-Bit rand() zu verschieben und ein weiteres rand() zu den niedrigen Bits hinzuzufügen = ein 32-Bit rand_32() zu erhalten - mein Beispiel

Ich stimme zu: Entweder testen oder die Generatorlogik optimieren, was in der Regel teurer ist als die Aufgabe.

 
Valeriy Yastremskiy:

Ich stimme zu: Entweder man testet oder bastelt an der Generatorlogik herum, was in der Regel teurer ist als die eigentliche Aufgabe.

)

Grund der Beschwerde: