우연과 낚시

우연히 동전을 던진다는 것은 조작될 수 있다 란 취지의 기사를 보았다.
호주인지 영국인지 연구팀이 13 (!) 명 이라는 거대한 표본을 잡아서 300번씩 동전을 던지게 한 결과 조금의 요령으로도 "과반수" 인 7명 (전체 13명 중 7명!) 이나 앞면이 훨씬 더 (하지만 얼마나 많은 사람들이 얼마나 더 나왔는지 밝히지는 않는다) 나왔으며 또한 그 중 한 사람은 68%의 확률로 앞면이 더 나왔다고 한다.
일단 여기까지만 해도 바로 낚시 기사의 스멜이 강하게 풍겨와서 계산을 좀 해 보기로 했다.

300번 동전을 던져 앞면이 68% 이상 나올 확률을 계산해 보자.
동전의 앞면이 나올 확률은 1/2 인 이항분포이고 300번이 상당히 많은 수행 이라고 하면 B(300, 1/2) -> N(300*(1/2), 300*(1/2)*(1/2)) 이므로
N(150, (8.6)^2) 가 되어 Z = (X-150)/8.6 가 된다.
300회의 68% 면 204회이므로
Z=(204-150)/8.6  => 6.2 가 되는데 3 이상은 표준 정규 분포표에도 나오지 않는 굉장히 희박한 확률이다. 그렇다면 300번 정도의 시행으로는 정규 분포를 이루지 않거나 정규 분포를 이루었다면 300번에 68% 의 확률로 앞면이 나온 것은 굉장히 일어나기 어려운 일이라는 결론이 났다.

여기서 그럼 이 기사는 낚시가 아니네 라고 생각하다가 300회는 적당히 크려니, 따라서 정규분포려니 하는 생각을 접고 그냥 쌩으로 확률을 계산해보자 란 생각이 들었다.

일단 300회 시행에 모두 앞면이 나올 확률은 300C300(1/2)^300 이고
299번 앞면이 나올 확률은 300C299(1/2)^299
...
204번 앞면이 나올 확률은 300C204(1/2)^300 이다.
이걸 구하려고 script 를 하나 짰더니 overflow 가 났다.

Math::BigFloat 를 급하게 수배해서 새로 계산해 보니 결과값 0.000000000212505...
이게 뭐야 무서워...

오케이 인정. 300번 던져서 200번 앞면 나오게 하면 용자 인정!

오늘의 교훈
  1. perl 의 변수 한계는 메모리에만 있다 라고 줏어들은 지식으로 수치계산 하면 inf 만난다.
  2. 아무리 잊어버릴 것 같지 않은 것 이라도 안쓰면 바로 레테 건넌다. B(n, p) N(np, npq) 가 생각 안 날 줄이야.
  3. 이건 낚시다 라는 감에만 의존하면 이런 포스팅 하게 된다 ㅡ.ㅡ;

이쉥퀴 구라까고있네 라고 생각한 사람을 위해 준비했다.

Posted by eoh

2009/12/10 18:22 2009/12/10 18:22
, , , ,
Response
No Trackback , No Comment
RSS :
http://endofhope.com/tc/rss/response/15

Console 영한사전

콘솔에서 뭔가 할 때 사전 프로그램을 매번 띄우기도 뭣하고 그렇다고 브라우저에서 찾는 것도 귀찮아서 OPEN-API 를 이용하여 console 에서 동작하는 사전을 만들었다.
예전에도 비슷한 것을 만든 적이 있었는데, 한 1,2년 잘 쓰다가 갑자기 안 되서 이상하다 생각했다. 알고 보니 서비스 종료 켁.
.
OPEN 플랫폼이니 매쉬업이니 하는 것들이 서비스 제공자와 이용자에게 다 좋은 윈윈 이니뭐니 아무리 추켜세워도 결국 변하지 않는 것은 "돈이 안 된다 싶으면 언제든지 접을 수 있다" 란 것이니 지금은 문제 없다 할 지라도 결국 자기 것은 자기가 다 들고 있어야 한다는 건 피할 수 없는 진리인 것 같다.

이솝 우화에도 나오다시피 자기가 해야겠다 생각하지 않고 누구 시켜서 해야지 하면 종달새 어미한테도 무시당하는 건 예나 지금이나 다를 바 없나보다.

자 잡설은 그만두고,
UTF-8 locale 용 console dictionary주의사항
  • DAUM open api 를 사용한다. (따라서 네트워크 연결된 상태에서만 동작한다.)
  • Perl 로 구현하였다.
    • XML::DOM 모듈을 사용한다. 없는 경우 cpan install XML::DOM 으로 설치.
  • n 은 다음 목록, p 는 이전 목록을 보여준다. 종료는 Enter.
  • Windows 에서 동작시키려면
    • 일단 perl 을 설치 (http://www.perl.org)
    • 가장 아래쪽 부분의 두 서브루틴을 조절한다.
  • sub set_environment{
        ${$_[0]} = "d3b3c8fe22566e904b1b0b759c190736fe16e843";
        ${$_[1]} = "WORD";
        ${$_[2]} = 5;
        #binmode STDOUT, ":utf8";
    }
    sub change_enc{
        #return $_[0];
        return encode("euc-kr", $_[0]);
    }
  • *nix 계열에서는 XML::DOM 설치만 하면 잘 돌아가는 듯 싶다.

Posted by eoh

2009/11/11 01:23 2009/11/11 01:23
,
Response
No Trackback , No Comment
RSS :
http://endofhope.com/tc/rss/response/12


블로그 이미지

말할 수 있는 것은 분명하게 말해질 수 있다. 말해질 수 없는 것에 대해서는 침묵해야 한다. 논리 철학 논고 - 루드비히 비트겐슈타인.

- eoh

Archives

Authors

  1. eoh

Recent Comments

Recent Trackbacks

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
20058
Today:
43
Yesterday:
47