Geração de números aleatórios uniformemente distribuídos (0,1) - página 11
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
на пятом форуме есть свежая статья на эту тему, там все для начинающих с картинками и примерами
Obrigado. Eu já li e agora só preciso terminar de baixar o VS. :)Como a operação de dividir o dobro também é bastante lenta, você ainda pode acelerar o procedimento se você se livrar dele. Por exemplo, assim:
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
Será que seria muito mais curto?
Поскольку операция деления double тоже довольно медленная, то можно еще ускорить процедуру если избавиться от нее. Например так:
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
Интересно, насколько это сократит время.
Obrigado. Vamos verificar (mais tarde). Agora procurando o número de partidas por 1000000 ranD(0,32)...
Спасибо. Сейчас проверим(позже). Сейчас ищу кол-во совпадений на 1000000 ranD(0,32)...Para verificar a qualidade da seqüência, o seguinte teste simples é útil:
Desenhe eixos de coordenadas, por exemplo, em Excel ou Matlab, execute o gerador e comece a marcar pontos com as seguintes coordenadas:
(x1,x2), (x3,x4), (x5,x6), etc., ou seja, como abcissa tiramos algum número dado pelo gerador, e como ordenado - necessariamente o seguinte. É desejável (se for possível) executar desta forma alguns dos ciclos PRNG pretendidos.
Se as características do gerador forem "boas", devemos ver uma imagem na forma de pontos uniformemente espaçados ao redor do quadrado sem compactação visível da estrutura. Se houver regularidades visíveis, significa que o gerador está com defeito - há correlações entre seus dados.
Não me lembro do nome deste método, foi-me ensinado no instituto, mas sempre funciona bem. E captura até mesmo correlações tão fracas, que métodos estatísticos engenhosos nem sempre são detectáveis. Sugiro usá-la. A maneira mais fácil de usar as ferramentas MQL é usar o arquivo CSV e depois construir um diagrama.
Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
Meu OpenOffice Calc está pendurado, então que se dane.Поскольку операция деления double тоже довольно медленная, то можно еще ускорить процедуру если избавиться от нее. Например так:
{
double div=0.5;
double rand=0;
for(int i=1; i<= rstep; i++)
{
//if(MathRand()+1>16383.5){rand+=MathPow(2,-i);}
if(MathRand()+1>16383.5){rand+= div;}
div= div*0.5;
}
Интересно, насколько это сократит время.
10000000 ranD(1,40) velocidade = 37,95500000 div=1/div
10000000 ranD(1,40) velocidade = 26,34800000 div=div*0,5
:)
Для проверки качества последовательности полезен следующий простой тест:
рисуем координатные оси, например, в Екселе или Матлабе, запускаем генератор и начинаем отмечать точки со следующими координатами:
(х1,х2), (х3,х4), (х5,х6), и т.д., т.е. в качестве абсциссы берем некое число, выдаваемое генератором, а в качестве ординаты - обязательно следующее. Желательно (если это возможно) прогнать так несколько предполагаемых циклов ГПСЧ.
Если характеристики генератора "хорошие", мы должны увидеть картинку в виде равномерно растыканных по всему квадрату точек без видимых уплотнений структуры. Если же имеются заметные глазу регулярности, значит генератор швах - между его данными имеются корреляции.
Не помню, как этот метод называется, меня ему еще в институте научили, но работает всегда замечательно. Причем вылавливает даже такие слабые корреляции, которые вумными статистическими методами не всегда поддаются выявлению. Советую воспользоваться. Средствами MQL проще всего через CSV-файл и потом построить уже диаграммку.
Aqui está um primitivo eu peguei um quadrado 1x1 dividido por 100 quadrados, aqui estão os acertos em 1000000 ranD(0,32)
em 1000 ranD(0,32)
:) a 100.000 ranD(0,32)