Случайные числа - страница 3

 
Функция 32768 * MathRand() + MathRand() по идее должна генерировать псевдослучайные равнораспределенные числа от 0 до 32768^2 - 1 = 1073741823, так что дискретностью можно управлять. Проекция этой последовательности на отрезок [0,1] дает дроби с дискретностью менее 1Е-9. Правда, проверить эту функцию на равномерность уже не так просто.

Mak
, а проблема, которую ты поднял, кажись, связана именно с соизмеримостью 32768 = 2^15 и числом Max.
Интересно, насколько часто возникает небходимость генерировать СЧ с точностью 4+ знака?
Candid, такая необходимость возникает, но не часто. Мне в рамках того, что я пытаюсь сделать, именно это и нужно.
 
Mathemat, тогда поделюсь одним сомнением. Иногда, при построении гистограмм по большому количеству данных, получаются далеко выскакивающие из  общей тенденции столбики на целых значениях, с "выеденными" окрестностями. К сожалению не могу найти у себя подходящей картинки для иллюстрации. Я подозреваю, что это дефект работы MQL с double.
 
Candid, ОК, тогда просто надо провести дополнительные исследования. Найду что-то серьезное - выложу сюда.
 
lna01:
Mathemat, тогда поделюсь одним сомнением. Иногда, при построении гистограмм по большому количеству данных, получаются далеко выскакивающие из общей тенденции столбики на целых значениях, с "выеденными" окрестностями. К сожалению не могу найти у себя подходящей картинки для иллюстрации. Я подозреваю, что это дефект работы MQL с double.
Нечеткое утверждение. В статье, которую я никак не допишу, приводится пример индикатора, реализующего нормальное распределение на основе генератора случайных чисел.
 
Ух, Rosh, как все запущено... В статье, которую я тоже все никак не допишу, я пытаюсь реализовать фрактальное распределение на основе генератора случайных чисел. А для нормального ты используешь библиотеку 'Probability Library' от strator'a?
 
Нет, использую предельную центральную теорему :)
Брутально, но зато наглядно. На следующей неделе должен доделать.
 
Mathemat:
Функция 32768 * MathRand() + MathRand() по идее должна генерировать псевдослучайные равнораспределенные числа от 0 до 32768^2 - 1 = 1073741823, так что дискретностью можно управлять. Проекция этой последовательности на отрезок [0,1] дает дроби с дискретностью менее 1Е-9. Правда, проверить эту функцию на равномерность уже не так просто.
.................
Плохой способ.
Последовательные вызовы MathRand взаимно зависимы, т.е. второй вызов - однозначная функция от результата первого.
При этом известно, что у этих датчиков (конгоруентных) часто имеется такой эффект, когда пары (тройки) последовательных чисел в их псевдослучайной последовательности подчиняются простым закономерностям. В общем такому способу создания псевдослучайных чисел я не доверяю.

Кроме того, судя по разрядности (15-16 бит) генератор построен на 2-х байтовых целых.
У этого ДСЧ не более 64К разных последовательностей, каждая длиной не более 64К чисел.
Дальше последовательность повторяется. И это в лучшем случае.
 
lna01:
Mathemat, тогда поделюсь одним сомнением. Иногда, при построении гистограмм по большому количеству данных, получаются далеко выскакивающие из общей тенденции столбики на целых значениях, с "выеденными" окрестностями. К сожалению не могу найти у себя подходящей картинки для иллюстрации. Я подозреваю, что это дефект работы MQL с double.
Это вряд ли.
Эффект тот же, про который я тут говорю, и он связан с дискретностью чего то на входе.
Например с округлением входных данных, или с тем, что цены имеют 2 или 4 цифры в дробной части.
 
Rosh:
..... В статье, которую я никак не допишу, приводится пример индикатора, реализующего нормальное распределение на основе генератора случайных чисел.
Элементарно ... :)
Сумма или разность 2-х равномерно распределенных чисел дает треугольное распределение.
Трех - чтото вроде параболы и т.д., с увеличением случайных слагаемых степень кривой растет.
В пределе по ЦПТ получается распределение гаусса.
Во многих программа (и справочниках) в качестве ДСЧ по гауссу используется сумма 12 равномерно распределенных сл.чисел.
 
Rosh:
Нечеткое утверждение. В статье, которую я никак не допишу, приводится пример индикатора, реализующего нормальное распределение на основе генератора случайных чисел.

Да, нечеткое, неутверждение и не о ГСЧ. Просто раз нужны СЧ с такой точностью, речь почти наверняка идёт об очень больших объёмах данных, с которыми наверняка будут делаться и другие операции. Капканов здесь может быть более чем достаточно, и самых неожиданных. Кстати, от 10Е-9 рукой подать до 10Е-15 - "паспортного" предела точности double.

Mak:
Это вряд ли.
Эффект тот же, про который я тут говорю, и он связан с дискретностью чего то на входе.
Например с округлением входных данных, или с тем, что цены имеют 2 или 4 цифры в дробной части.

Я с этим разбираться не стал, потому что эти столбики всё равно не давали значимого статистического преимущества. Но по пути к этим картинкам некоторые меры предосторожности всё же соблюдались. Кстати, как написано выше, паспортная дискретность double не так уж недосягаема.