Erzeugung von gleichmäßig verteilten Zufallszahlen (0,1)

 

Erzeugung von gleichmäßig verteilten Zufallszahlen (0,1) durch MQL-Tools ohne externe *.dll?

 
int MathRand()
Die Funktion gibt eine pseudozufällige Ganzzahl im Bereich von 0 bis 32767 zurück. Bevor Sie diese Funktion zum ersten Mal aufrufen, müssen Sie MathSrand verwenden, um den Pseudozufallszahlengenerator in den Anfangszustand zu versetzen.
Beispiel:
  MathSrand(TimeLocal());
// Zeigt 10 Zahlen an.
for(int i=0;i<10;i++ )
Print("Zufallswert ", MathRand());
 
sergeev >>:
int MathRand()
Функция возвращает псевдослучайное целое число в дипазоне от 0 до 32767. Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
Пример:


Ich weiß das!

Ich frage nach dem Bereich (0,1).

 

Der Genosse verlangt, dass 0 und 1 gleichmäßig verteilt werden, also teilen Sie sie in gerade und ungerade auf.

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0; i<10; i++ )
     Print("произвольная величина ", MathMod(MathRand(),2));

wie diese.

 
Urain писал(а) >>

Der Genosse verlangt, dass 0 und 1 gleichmäßig verteilt werden, also teilen Sie sie in gerade und ungerade auf.

Zum Beispiel so.

Oder meinen Sie reale Zahlen in einem bestimmten Bereich. Dann so:

MathRand() / 32767.0
 

Es tut mir leid, wenn Sie nach einem Bereich suchen.

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0; i<10; i++ )
     Print("произвольная величина ", MathRand()/32768);

etwa so.

 
lea >>:

Или имеются ввиду вещественные числа в заданном диапазоне. Тогда так:


So, so.

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0; i<10; i++ )
     Print("произвольная величина ", MathRand()/32768);
Es ist schwach.
 
gumgum >>:

Вот, вот.

Слабовато. помощнее?
MathSrand(TimeLocal());
...............
...............
...............
//---------------------------Непрерывный Генератор СЧ---------------------
double CRG(double min,double max) { return(min+((max-min)*MathRand()/32767.0));}
//=======================================================================

wo:

min - Bereichsanfang

max - Ende des Bereichs.


In Ihrem Fall wird das so sein:

void Start()
{
MathSrand(TimeLocal());
...............
...............
...............
double p=CRG(0.0,1.0);
}

//---------------------------Непрерывный Генератор СЧ---------------------
double CRG(double min,double max) { return(min+((max-min)*MathRand()/32767.0));}
//=======================================================================
 

wenn ja,

double ran= MathRand()/32768.;
dann ist zwischen n/32768. und n+1/32768. bei n e Z & n e [0.32767] leer. Das ist nicht gut.


 
joo >>:

где:

min - начало диапазона

max - конец диапазона.


В Вашем случае будет:


==
MathRand()/32768.
:(
 
gumgum писал(а) >>

wenn ja,

dann ist zwischen n/32768. und n+1/32768. mit n e Z & n e [0.32767] leer. Das ist nicht gut.

Wissen Sie, mein Lieber, dass es zwischen den reellen Zahlen, egal wie nahe sie beieinander liegen, eine unendliche Anzahl von reellen Zahlen gibt?

Und wissen Sie, dass das Intervall (0,1) einer unendlichen Linie in Potenz entspricht?

Wenn nein - denken Sie darüber nach.

Wenn ja - formulieren Sie Ihre Frage richtig.

Versuchen Sie gleichzeitig zu sagen, mit welcher Dichte (Stücke pro Längeneinheit) Sie eine MF-Generation haben wollen?

Oder vielleicht möchten Sie, dass Ihr GSF alle Nummern ein Segment von (0,1) ?