Geração de números aleatórios uniformemente distribuídos (0,1)

 

Geração de números aleatórios uniformemente distribuídos (0,1) por ferramentas MQL sem ferramentas externas *.dll?

 
em MathRand()
A função retorna um número inteiro pseudorandômico na faixa de 0 a 32767. Antes de chamar esta função pela primeira vez, você deve usar o MathSrand para definir o gerador de números pseudorandomais para o estado inicial.
Exemplo:
  MathSrand(TimeLocal());
// Exibe 10 números.
for(int i=0;i<10;i++ )
Print("random value ", MathRand());
 
sergeev >>:
int MathRand()
Функция возвращает псевдослучайное целое число в дипазоне от 0 до 32767. Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
Пример:


Eu sei disso!

Estou perguntando sobre a faixa (0,1).

 

O camarada pede 0 e 1 distribuídos uniformemente, portanto os divide em pares e ímpares.

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

assim.

 
Urain писал(а) >>

O camarada pede 0 e 1 distribuídos uniformemente, portanto os divide em pares e ímpares.

Assim.

Ou você quer dizer números reais em um determinado intervalo. Então, assim:

MathRand() / 32767.0
 

Sinto muito, se você está procurando uma gama.

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

algo como isto.

 
lea >>:

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


Ali, ali.

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

Вот, вот.

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

onde:

min - início da faixa

máx - fim de alcance.


No seu caso, será:

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 for o caso,

double ran= MathRand()/32768.;
então entre n/32768. e n+1/32768. em n e Z & n e [0,32767] está vazio. Isto não é bom.


 
joo >>:

где:

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

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


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


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

se for o caso,

então entre n/32768. e n+1/32768. com n e Z & n e [0,32767] está vazio. Isto não é bom.

Você sabe, caro amigo, que existe um número infinito de números reais entre quaisquer números reais, por mais próximos que estejam um do outro?

E você sabe que o intervalo (0,1) é equivalente a uma linha infinita em potência?

Se não - pense sobre isso.

Em caso afirmativo - formule sua pergunta corretamente.

Ao mesmo tempo, tente dizer a que densidade (peças por unidade de comprimento) você quer ter uma geração MF ?

Ou talvez você queira que seu FGTS gere todos os números um segmento de (0,1) ?