2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:28 
генератор случайных чисел выдает числа от 0 до 15.
Если число равняется нулю, то к общей сумме +14.
Если число больше нуля, то от общей суммы отнимается единичка (-1).

Запускаю генератор и получаю плюсовые значения в статистике.
примерно такие (каждая строка - результат 20 000 номеров)

1525
490
1435
280
910
1555
910
775
1270
1270
1180
1405
1180
1000
1270
550
1015
730
1000
655
1060
-200
1465
2350
1105
1495
1525
1690
70
1105
1150
1135
(ср. знач. 1073)

почему общая сумма так сильно стремится к тысяче, ведь она должна быть в пределах нуля?
Прошу специалистов объяснить, что я делаю неправильно. Вроде простенькая задачка.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:33 
Аватара пользователя
"Кривой" ГСЧ? :shock:

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:34 
Код в студию.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:39 
Аватара пользователя
Вы бы код выложили, а то так разве поймёшь где у Вас баг сидит.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:44 
Обратите внимание, что она не стремится к тыще, она колеблется вокруг неё.

Т.е. в целом генератор работает нормально, однако на начальном участке почему-то сбоит. В принципе, начальные сбои -- для генераторов нормальны. Я сам с этим сталкивался. Непонятно только, почему этот сбой проявляется так долго -- на протяжении нескольких (и даже многих) начальных тысяч. Какой-то странный генератор. Ну или, не исключено, Вы статистику накапливали как-то неадекватно.

Да, и ещё. Вообще-то отклонения от среднего (пусть и "неправильного") значения должны нарастать. Пусть медленно, но уверенно. А у Вас этого не наблюдается.

Я начинаю становиться Станиславским. Или, что то же, Пешковым. "А был ли мальчик?... Может, мальчика-то и не было?..."

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:46 
Аватара пользователя
Расчудесно. Я сейчас оборжусь. Что за генератор-то, чем питается? Дровами, торфом, плутонием?

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:47 
Возможно проблема действительно в генераторе.
Числа получаю из символов sha256(microtime())
из которых получаю сначала ord(), которые затем уменьшаются (-15) пока число не станет <15.

Попробую простым rand() заменить


UPD
простой rand дал
340
-350
-35
115
205
-35
-350
25
130
295
-215
-5
-185
310
-290
-35
340
-305
415
-215
-125
205
40
115
-260
-170
160



в среднем 4,444444444


т.е. в пределах. Напрасно тему создал, получается ))
В общем, надо искать нормальный ранд.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:56 
RomanoffWad в сообщении #1175569 писал(а):
Числа получаю из символов sha256(microtime())

Не знаю, ни что такое "ша", ни тем более что такое "микротайм" (пардон, правильно "майкротиме", конечно). Но, судя по всему, эта процедура тупо запрашивает состояние системных часов, оставляя лишь младшие разряды, причём делает это часто. Ну тогда ничего удивительного: на начальном участке накапливается некоторая значительная сумма, добавки к которым после многих тысяч циклов (никак не синхронизированных с циклом собственно запросов) затем нивелируются.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 00:15 
Аватара пользователя
RomanoffWad в сообщении #1175559 писал(а):
генератор случайных чисел выдает числа от 0 до 15.
Если число равняется нулю, то к общей сумме +14.
Если число больше нуля, то от общей суммы отнимается единичка (-1).

Запускаю генератор и получаю плюсовые значения в статистике.
примерно такие (каждая строка - результат 20 000 номеров)

Если генератор даёт равномерное распределение, то математическое ожидание суммы для $20\,000$ слагаемых равно $-1250$.
Я средствами Wolfram Mathematica провёл численный эксперимент, получил выборку $${-1160,-665,-1430,-830,-305,-1475,-1445,-1715,$$ $$-1385,-1310,-800,-1565,-2135,-1280,-395,-1670,$$ $$-1220,-980,-1190,-2000,-1325,-80,-1400,-1655,$$ $$-2075,-1790,-1205,-260,-965,-95,-1985,-1175}$$ со средним значением $-1217.65625$.

Что-то у Вас не в порядке с генератором…

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 00:35 
ewert в сообщении #1175571 писал(а):
RomanoffWad в сообщении #1175569 писал(а):
Числа получаю из символов sha256(microtime())

Не знаю, ни что такое "ша", ни тем более что такое "микротайм" (пардон, правильно "майкротиме", конечно). Но, судя по всему, эта процедура тупо запрашивает состояние системных часов, оставляя лишь младшие разряды, причём делает это часто. Ну тогда ничего удивительного: на начальном участке накапливается некоторая значительная сумма, добавки к которым после многих тысяч циклов (никак не синхронизированных с циклом собственно запросов) затем нивелируются.

хеш-функция.
В данном случае получает системное время и преобразует его в нечто вроде
7BB9466B20DC4A63FD2A14DFE6B3A36A348DFAA5F05BA46683A5607011746E39

которе затем преобразовываю в числа 0-14.

Раньше перекосов не замечалось )))
И таки придётся что-то другое использовать значит.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 10:08 
Аватара пользователя
Функция ord() у Вас что возвращает? И вообще что делает с (256-битным?) числом?

-- 10 дек 2016, 10:13 --

Да, и ещё не пойму. У Вас должно выдаваться 16 равновероятных исходов. В 15 Вы вычитаете единицу, в одном прибавляете 14. То есть в среднем у Вас должно на единицу уменьшаться. А после 20000 опытов стать отрицательным около 20000/16=1250. Со знаком всё в норме?

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 12:08 
Аватара пользователя
RomanoffWad в сообщении #1175569 писал(а):
которые затем уменьшаются (-15) пока число не станет <15.

А надо на 16 уменьшать (если уж делать таким кривым способом)...

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 12:30 
Да, для этого есть mod, он же остаток от деления. :-)

-- Сб дек 10, 2016 14:33:17 --

RomanoffWad в сообщении #1175584 писал(а):
Раньше перекосов не замечалось )))
Проблемы с RANDU тоже не сразу заметили. Вообще лучше самописными ГПСЧ не пользоваться, если они не проверены стандартными статистическими тестами.

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 13:45 
Аватара пользователя
Всё, кажется понял...
RomanoffWad в сообщении #1175559 писал(а):
генератор случайных чисел выдает числа от 0 до 15.
Если число равняется нулю, то к общей сумме +14.
Если число больше нуля, то от общей суммы отнимается единичка (-1).

RomanoffWad в сообщении #1175584 писал(а):
которе затем преобразовываю в числа 0-14.

RomanoffWad в сообщении #1175569 писал(а):
из которых получаю сначала ord(), которые затем уменьшаются (-15) пока число не станет <15.

$256=15\times17+1$ - ноль случается 18 раз против 17 раз на каждое другое число... и $20000/256\times14=1093.75$

 
 
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 13:52 
Евгений Машеров в сообщении #1175603 писал(а):
Да, и ещё не пойму. У Вас должно выдаваться 16 равновероятных исходов.
Нет. ТС явно пишет на языке с C-подобным синтаксисом: :mrgreen:
RomanoffWad в сообщении #1175584 писал(а):
которе затем преобразовываю в числа 0-14.

 
 
 [ Сообщений: 25 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group