2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 странности с /dev/random
Сообщение02.03.2009, 08:07 
Аватара пользователя


26/01/09
137
made in USSR
решил проверить чему будет равна вероятность бросания монеты используя perl+linux+/dev/random
ожидал что она с увеличением числа итераций будет все точнее приближаться к 0.5000000000000001.... или к 0.499999999999999999999.
но на самом деле даже при большом количестве испытаний вероятность довольно сильно скачет:

Код:
#!/usr/bin/perl
$total=1;
$tt=0;

open(FR,'</dev/urandom');
while (1) {
    $g=getc(FR);
    $r=(ord($g)+0)/255.0;
     if ( $r  > 0.5 ) {
       $tt+=1;
     }
     printf("total: %d tt: %d p=%s\n",$total,$tt,$tt/$total) if $total%100000 == 0;
     $total+=1;
}


пробовал на linux,solaris с ruby и perl - результат одинаков - стабильность только до4го знака.
...................................................................
total: 24400000 tt: 12199358 p=0.49997368852459
total: 24500000 tt: 12249208 p=0.499967673469388
total: 24600000 tt: 12299211 p=0.499967926829268
total: 24700000 tt: 12349160 p=0.499965991902834
total: 24800000 tt: 12399328 p=0.499972903225806
total: 24900000 tt: 12449338 p=0.499973413654618
total: 25000000 tt: 12499403 p=0.49997612
total: 25100000 tt: 12549564 p=0.499982629482072
total: 25200000 tt: 12599578 p=0.499983253968254
total: 25300000 tt: 12649923 p=0.499996956521739
total: 25400000 tt: 12699960 p=0.49999842519685
total: 25500000 tt: 12750156 p=0.500006117647059
total: 25600000 tt: 12800283 p=0.5000110546875
total: 25700000 tt: 12850340 p=0.500013229571984
total: 25800000 tt: 12900299 p=0.500011589147287
total: 25900000 tt: 12950054 p=0.500002084942085
total: 26000000 tt: 13000077 p=0.500002961538462
total: 26100000 tt: 13050041 p=0.500001570881226
...................................................................

 Профиль  
                  
 
 
Сообщение02.03.2009, 08:36 
Модератор
Аватара пользователя


11/01/06
5702
Циферки стабилизируются просто не так быстро как вам хотелось бы.

А значение $p$ ведет себя как нормально распределенная случайная величина - см. http://mathworld.wolfram.com/CentralLimitTheorem.html

 Профиль  
                  
 
 
Сообщение02.03.2009, 08:46 
Заслуженный участник


11/05/08
32166
Генераторы случайных чисел обычно базируются на четырёхбайтовых целых числах, это -- порядка $10^9$. С другой стороны, точность приближения к половинке -- порядка $\sqrt n$. Для достижения четвёртого-пятого знака требуется как раз порядка $10^9$ чисел, но это -- уже период генератора.

 Профиль  
                  
 
 
Сообщение02.03.2009, 08:57 
Модератор
Аватара пользователя


11/01/06
5702
ewert в сообщении #190869 писал(а):
Генераторы случайных чисел обычно базируются на четырёхбайтовых целых числах, это -- порядка $10^9$.

/dev/random не такой - см. http://ru.wikipedia.org/wiki//dev/random

 Профиль  
                  
 
 
Сообщение02.03.2009, 09:14 
Аватара пользователя


15/11/06
2689
Москва Первомайская
Попробуйте на компьютере проверить закон повторного логарифма. У меня лично ничего не получилось. http://dxdy.ru/topic5246.html

 Профиль  
                  
 
 
Сообщение02.03.2009, 09:40 
Аватара пользователя


26/01/09
137
made in USSR
точно, вроде сходится, но очень медленно. это заметнее если смотреть на дельту:

total: 30000000 tt: 15005563 delta: -0.000142567 p=0.500185433
total: 40000000 tt: 20004850 delta: -0.000064183 p=0.500121250
total: 50000000 tt: 25003826 delta: -0.000044730 p=0.500076520
total: 60000000 tt: 30004195 delta: -0.000006603 p=0.500069917
total: 70000000 tt: 35002570 delta: -0.000033202 p=0.500036
.....................................................................
total: 540000000 tt: 270004512 delta: 0.000004123 p=0.500008356
total: 550000000 tt: 275006194 delta: 0.000002906 p=0.500011262
total: 560000000 tt: 280005618 delta: -0.000001230 p=0.500010032
total: 570000000 tt: 285003698 delta: -0.000003544 p=0.500006488
total: 580000000 tt: 290002644 delta: -0.000001929 p=0.500004559
total: 590000000 tt: 295002737 delta: 0.000000080 p=0.500004639
total: 600000000 tt: 300003055 delta: 0.000000453 p=0.500005092

 Профиль  
                  
 
 
Сообщение02.03.2009, 10:04 
Заслуженный участник


11/05/08
32166
total=30000000 sqrt(total)*abs(delta)=0.780872
total=40000000 sqrt(total)*abs(delta)=0.405929
total=50000000 sqrt(total)*abs(delta)=0.316289
total=60000000 sqrt(total)*abs(delta)=0.051147
total=70000000 sqrt(total)*abs(delta)=0.277788
............................................................
total=540000000 sqrt(total)*abs(delta)=0.095810
total=550000000 sqrt(total)*abs(delta)=0.068152
total=560000000 sqrt(total)*abs(delta)=0.029107
total=570000000 sqrt(total)*abs(delta)=0.084612
total=580000000 sqrt(total)*abs(delta)=0.046456
total=590000000 sqrt(total)*abs(delta)=0.001943
total=600000000 sqrt(total)*abs(delta)=0.011096

Глючит генератор -- последние цифирки шибко малы (все должны быть порядка 0.5).

 Профиль  
                  
 
 
Сообщение02.03.2009, 17:09 


23/12/08
245
Украина
Делали ми лабораторную в которой оценивали качество генератора случайных чисел. Мы там оценивали дисперсию на разных измерениях. Так как результат дожлжны были увидеть что дельше 4-5 измерения ниодин псевдогенератор не проходит тест.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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



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

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


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

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