Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   ich habe Zufallszahl Problem (http://www.expert-advisor.com/forum/showthread.php?t=6056)

mante 23.03.18 19:01

ich habe Zufallszahl Problem
 
hallo - ich bitte um eure Hilfe :-)

wie kann ich folgendes Problem lösen

ein Zufallsgenerator erzeugt Zahlen von 1 bis 10

dieser Generator liefert jedoch öfters die gleiche Zahl in Serie

zb:

4,7,9,7,7,7,7,8

wie kann ich aus dieser Reihenfolge 4,7,9,7,8..... machen

der Code soll sich die vorangehende Zahl merken und nur einen Wert liefern wenn die neue zahl unterschiedlich ist

geht sowas nur mit einem Array?

lg mante

Ca$hDigger 23.03.18 19:15

Es reicht eine Variable in der die letzte Zufallszahl gespeichert wird.
Eine Endlosschleife generiert dann solange Zufallszahlen bis die Zufallszahl ungleich der gespeicherten letzten gültigen Zufallszahl ist. Ist die Bedingung erfüllt bricht die Schleife ab und man erhält die nächste gültige Zufallszahl die sich von der vorigen unterscheidet.

C$D

mante 23.03.18 20:06

keine Rückmeldung
 
hallo cash digger - danke für deine Antwort

ich hab das so programmiert

int Wert(int Zufallszahl)

{
int x = Zufallszahl;

while(x=x)

{

Print(" geich");

}
Print ("Zahl hat sich geändert");

}

der mt4 war damit ein wenig überfordert - es kam die Meldung keine Rückmeldung :-)

hab ich da was falsch programmiert?

lg mante

Ca$hDigger 23.03.18 23:10

Ich würde es so angehen:

Code:

int lastRand = 0; // global

int getRand()
{
  int Rand;
  while(1)
  {
      Rand = MathRand();
      if(Rand != lastRand)
      {
        lastRand = Rand;
        return(Rand);
      }
  }
}

Im Programm dann einfach per getRand() den Wert holen.

int lastRand sollte ausserhalb der Funktion liegen damit der Wert am leben bleibt.

MathRand() müsste natürlich noch angepasst werden um den gewünschten Wertebereich zu erhalten.
siehe auch:
https://docs.mql4.com/math/mathrand
https://www.mql5.com/en/forum/125208

Grüße

next user 24.03.18 06:13

Noch ne kleine Anmerkung meinerseits...

Zitat:

Zitat von mante (Beitrag 40663)
ich hab das so programmiert

int Wert(int Zufallszahl)

{
int x = Zufallszahl;

while(x=x)

{

Print(" geich");

}
Print ("Zahl hat sich geändert");

}

der mt4 war damit ein wenig überfordert - es kam die Meldung keine Rückmeldung :-)

hab ich da was falsch programmiert?

lg mante

Etwas deutlicher...
Code:

int Wert(int Zufallszahl)
{
  int x = Zufallszahl;
 
  while(x=x)
  {
      Print(" geich");
  }
  Print ("Zahl hat sich geändert");
}

Wenn das wirklich der ganze Code ist, so ist er natürlich falsch.
  • Wo wird da eine Zufallszahl generiert? Vor dem Aufruf von "Wert()"?
  • Deine Bedingung "while(x=x)" führt eine Zuweisung durch (Ein "=")!
  • Aber egal ob jetzt mit einem oder zwei Gleichheitszeichen, deine Bedingung führt zu einer Endlosschleife, die du
    nirgendwo im Code abbrichst.
  • Deine beiden Prints würden in einem "if-else" Sinn machen. Aber so wie du es stehen hast, wird Print 2 immer
    unabhängig des ersten Print ausgeführt, welches wiederum IMMER in deiner Endlosschleife ausgeführt wird, die wiederum
    dafür verantwortlich ist, das Print 2 eben NIE ausgeführt wird.

mante 24.03.18 13:49

Danke
 
vielen Dank cash digger und next user!!!!

die Zufalls zahl kommt aus einer anderen Funktion und wird mit

int Wert(int Zufallszahl)

an diese Schleife übergeben. Eigentlich ist es ein Wert der in einem Chart entsteht. Ich möchte mit dem Code den neuen Wert an eine andere Funktion übergeben.

etwa so

4,4,4,4,4, Schleife macht nix
4,4,4,4,6 Schleife bricht ab übergibt (6) an andere Funktion

6,6,6,6,6,6,6,9 Schleife übergibt (9) an andere Funktion

solange die gleiche Zahl kommt dreht sie sich im Kreis


für euch ist das sicher lächerlich - aber ich programmiere erst seit sehr kurzer Zeit

lg mante:rolleyes:

AVT 24.03.18 14:24

Zitat:

Zitat von mante (Beitrag 40660)
ein Zufallsgenerator erzeugt Zahlen von 1 bis 10
dieser Generator liefert jedoch öfters die gleiche Zahl in Serie
zb: 4,7,9,7,7,7,7,8

Mal eine Frage, wozu brauchst Du einen Zufallsgenerator, wenn Du danach das was er generiert wieder zunichte machst? Das ist doch gerade Sinn und Zweck des Generators, daß er eben auch x-mal hintereinander dieselbe Zahl liefern kann. -grübel-
AVT

mante 24.03.18 14:39

diese Zahl
 
entsteht im Chart - deshalb ist sie zufällig - der Code soll erst fortgesetzt werden wenn sie sich ändert :-)

sie letzter Eintrag von mir

lg mante :)

next user 24.03.18 20:22

Zitat:

Zitat von mante (Beitrag 40675)
4,4,4,4,4, Schleife macht nix
4,4,4,4,6 Schleife bricht ab übergibt (6) an andere Funktion

6,6,6,6,6,6,6,9 Schleife übergibt (9) an andere Funktion

solange die gleiche Zahl kommt dreht sie sich im Kreis

Und zwar im wahrsten Sinne des Wortes. :D
In deinem bisherigen Code hat die Schleife ja nichts gemacht und wird auch nicht abgebrochen.
Sie dreht sich also wriklich im Kreis.

mante 24.03.18 20:38

hat jemand eine lösung für mich :)
 
#6 (permalink) Bewerten Sie diesen Beitrag von mante Beitrag melden
Alt vor 6 Stunden
mante mante ist gerade online
Neues Mitglied

Registriert seit: Mar 2018
Beiträge: 4
mante befindet sich auf einem aufstrebenden Ast
Standard Danke
vielen Dank cash digger und next user!!!!

die Zufalls zahl kommt aus einer anderen Funktion und wird mit

int Wert(int Zufallszahl)

an diese Schleife übergeben. Eigentlich ist es ein Wert der in einem Chart entsteht. Ich möchte mit dem Code den neuen Wert an eine andere Funktion übergeben.

etwa so

4,4,4,4,4, Schleife macht nix
4,4,4,4,6 Schleife bricht ab übergibt (6) an andere Funktion

6,6,6,6,6,6,6,9 Schleife übergibt (9) an andere Funktion

solange die gleiche Zahl kommt dreht sie sich im Kreis


für euch ist das sicher lächerlich - aber ich programmiere erst seit sehr kurzer Zeit

lg mante


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum