Generazione di numeri casuali uniformemente distribuiti (0,1)

 

Generazione di numeri casuali uniformemente distribuiti (0,1) da strumenti MQL senza *.dll esterno?

 
int MathRand()
La funzione restituisce un numero intero pseudocasuale nell'intervallo da 0 a 32767. Prima di chiamare questa funzione per la prima volta, dovete usare MathSrand per impostare il generatore di numeri pseudocasuali allo stato iniziale.
Esempio:
  MathSrand(TimeLocal());
// Visualizza 10 numeri.
for(int i=0;i<10;i++ )
Print("valore casuale ", MathRand());
 
sergeev >>:
int MathRand()
Функция возвращает псевдослучайное целое число в дипазоне от 0 до 32767. Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
Пример:


Lo so!

Sto chiedendo dell'intervallo (0,1).

 

Il compagno chiede che lo 0 e l'1 siano distribuiti uniformemente, quindi dividili in pari e dispari.

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

come questo.

 
Urain писал(а) >>

Il compagno chiede che lo 0 e l'1 siano distribuiti uniformemente, quindi dividili in pari e dispari.

Come questo.

O intendi numeri reali in un dato intervallo. Allora come questo:

MathRand() / 32767.0
 

Mi dispiace, se stai cercando una gamma.

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

qualcosa del genere.

 
lea >>:

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


Ecco, ecco.

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

Вот, вот.

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

dove:

min - inizio gamma

max - fine dell'intervallo.


Nel vostro caso sarà così:

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

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

se è così,

double ran= MathRand()/32768.;
allora tra n/32768. e n+1/32768. a n e Z & n e [0,32767] è vuoto. Questo non va bene.


 
joo >>:

где:

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

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


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


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

se è così,

allora tra n/32768. e n+1/32768. con n e Z & n e [0,32767] è vuoto. Questo non va bene.

Lo sai, caro amico, che c'è un numero infinito di numeri reali tra qualsiasi numero reale, per quanto vicini tra loro?

E sapete che l'intervallo (0,1) è equivalente a una linea infinita in potenza?

Se no - pensaci.

Se sì - formulate correttamente la vostra domanda.

Allo stesso tempo prova a dire a quale densità (pezzi per unità di lunghezza) vuoi avere una generazione MF?

O forse volete che il vostro GSF generi tutti i numeri un segmento di (0,1) ?

Motivazione: