2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:28 


12/10/16

31
генератор случайных чисел выдает числа от 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 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
"Кривой" ГСЧ? :shock:

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:34 
Заслуженный участник


04/03/09
910
Код в студию.

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


19/12/10
1546
Вы бы код выложили, а то так разве поймёшь где у Вас баг сидит.

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


11/05/08
32166
Обратите внимание, что она не стремится к тыще, она колеблется вокруг неё.

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

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

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:46 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Расчудесно. Я сейчас оборжусь. Что за генератор-то, чем питается? Дровами, торфом, плутонием?

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение09.12.2016, 23:47 


12/10/16

31
Возможно проблема действительно в генераторе.
Числа получаю из символов 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 
Заслуженный участник


11/05/08
32166
RomanoffWad в сообщении #1175569 писал(а):
Числа получаю из символов sha256(microtime())

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 00:15 
Заслуженный участник
Аватара пользователя


23/07/05
17976
Москва
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 


12/10/16

31
ewert в сообщении #1175571 писал(а):
RomanoffWad в сообщении #1175569 писал(а):
Числа получаю из символов sha256(microtime())

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

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

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

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 10:08 
Заслуженный участник
Аватара пользователя


11/03/08
9907
Москва
Функция ord() у Вас что возвращает? И вообще что делает с (256-битным?) числом?

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

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 12:08 
Заслуженный участник
Аватара пользователя


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

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 12:30 
Заслуженный участник


27/04/09
28128
Да, для этого есть mod, он же остаток от деления. :-)

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

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

 Профиль  
                  
 
 Re: Статистика 1 из 15. Не могу понять почему перекос
Сообщение10.12.2016, 13:45 
Заслуженный участник
Аватара пользователя


01/09/13
4656
Всё, кажется понял...
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 
Заслуженный участник


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group