본문 바로가기

프로그래밍 공부/C++

어서와 C++는 처음이지! 챕터2, 16번 문제

C언어 다음 단계로 C++을 독학하는 중이다. 아직 초반이라서 C언어와 크게 다른 점은 없는 것 같다.

printf 함수 대신에 cout 함수를 쓰고, scanf 함수 대신에 cin 함수를 쓰고,

문자열 사용에 있어서 좀 더 편리해진 게 몇 가지 있는 정도이다.

 

아무튼, 교재는 어서와 C++는 처음이지라는 책인데, 이것 역시 교보문고 SAM 구독 시 무료로 볼 수 있는 책이라서 골랐다.

그리고 이 책 역시 예제 문제가 많은데 답지가 없다...

 

이번에 포스팅하는 문제는 전혀 어렵거나 한 것은 아닌데, 조금 재밌는 문제여서 포스팅한다.

코딩 자체가 재밌다기 보다는 결과가 흥미롭다.

 

(문제) 처음 가진 돈은 50원이고, 100원 또는 0원이 될때까지 베팅을 계속한다. 이길 확률은 50%이다.

베팅을 성공하면 돈이 +1되고, 실패하면 -1 된다.

게임이 끝날 때 전체 게임수와 이긴 게임수를 출력하는 프로그램이다.

코딩 자체는 특별한 것이 없고, 아래는 결과이다.

위는 판돈을 모두 잃었을 때 전체 게임의 승률이고, 아래는 판돈이 2배가 되었을 때 전체 게임의 승률이다.

보면 두 승률 차이가 거의 없고, 둘 다 0.5에 가깝다. 그러나 결과는 하늘과 땅이라는 것이 흥미롭다.

확률이 0.4957임에도 판돈을 모두 잃었다.
확률이 0.507이었음에도 판돈이 2배가 되었다.

 

근데 생각해보니 돈을 모두 잃으려면 진 횟수가 이긴 횟수보다 50번만 더 많으면 되니까...

판수가 늘어날수록 확률이 0.5에 근접하는 건 당연하긴 하다.