Generación de números aleatorios distribuidos uniformemente (0,1)

 

¿Generación de números aleatorios uniformemente distribuidos (0,1) por las herramientas MQL sin necesidad de un archivo *.dll externo?

 
int MathRand()
La función devuelve un entero pseudoaleatorio en el rango de 0 a 32767. Antes de llamar a esta función por primera vez, debe utilizar MathSrand para poner el generador de números pseudoaleatorios en el estado inicial.
Ejemplo:
  MathSrand(TimeLocal());
// Muestra 10 números.
for(int i=0;i<10;i++ )
Print("random value ", MathRand());
 
sergeev >>:
int MathRand()
Функция возвращает псевдослучайное целое число в дипазоне от 0 до 32767. Перед первым вызовом функции необходимо использовать функцию MathSrand, чтобы перевести генератор псевдослучайных чисел в начальное состояние.
Пример:


¡Ya lo sé!

Pregunto por el rango (0,1).

 

El camarada pide que el 0 y el 1 se distribuyan uniformemente, así que divídelos en pares e impares.

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

así.

 
Urain писал(а) >>

El camarada pide que el 0 y el 1 se distribuyan uniformemente, así que divídelos en pares e impares.

Así.

¿O te refieres a números reales en un rango determinado? Entonces, así:

MathRand() / 32767.0
 

Lo siento, si estás buscando un rango.

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

algo así.

 
lea >>:

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


Ahí, ahí.

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

Вот, вот.

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

donde:

min - inicio de rango

max - fin de gama.


En su caso lo 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));}
//=======================================================================
 

si es así,

double ran= MathRand()/32768.;
entonces entre n/32768. y n+1/32768. en n e Z & n e [0.32767] está vacío. Esto no es bueno.


 
joo >>:

где:

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

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


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


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

si es así,

entonces entre n/32768. y n+1/32768. con n e Z & n e [0,32767] está vacío. Esto no es bueno.

¿Sabes, querido amigo, que hay un número infinito de números reales entre cualquier número real, por muy cercano que esté?

¿Y sabes que el intervalo (0,1) equivale a una línea infinita en potencia?

Si no, piénsalo.

Si es así, formule su pregunta correctamente.

Al mismo tiempo, trate de decir a qué densidad (piezas por unidad de longitud) quiere tener una generación de MF ?

O tal vez quiera que su GSF genere todos los números un segmento de (0,1) ?

Razón de la queja: