프로그램 1.3.8 도박꾼의 파산 시뮬레이션 (gambler.py)
import random import sys import stdio stake = int(sys.argv[1]) goal = int(sys.argv[2]) trials = int(sys.argv[3]) bets = 0 wins = 0 for t in range(trials): # 도박 한 판을 진행한다. cash = stake while (cash > 0) and (cash < goal): # 한 번의 베팅을 시뮬레이션한다. bets += 1 if random.randrange(0, 2) == 0: cash += 1 else: cash -= 1 if cash == goal: wins += 1 stdio.writeln(str(100 * wins // trials) + '% 이김') stdio.writeln('평균 베팅 수: ' + str(bets // trials))
stake goal trials bets wins cash |
초기 판돈 목표액 시뮬레이션 횟수 베팅 횟수 우승 횟수 현재 수중에 있는 돈 |
% python3 gambler.py 10 20 1000 50% 이김 평균 베팅 수: 100 % python3 gambler.py 50 250 100 19% 이김 평균 베팅 수: 11050 % python3 gambler.py 500 2500 100 21% 이김 평균 베팅 수: 998071
이 프로그램은 명령 줄 인수로 초기 판돈(stake), 목표액(goal), 시도 횟수(trials)를 입력받는다. 도박판을 시도 횟수만큼 진행하며, 각 도박판은 초기 판돈으로 시작해 파산하거나 목표액에 도달할 때까지 계속 베팅하면서 진행한다. 그러고 나서 이길 확률과 도박 한 판에서 수행한 평균 베팅 수를 출력한다. 내부 while
루프에서는 도박꾼이 stake
로 시작해 목표액에 도달하거나 파산할 때까지 $1 베팅하는 것을 시뮬레이션한다. 이 프로그램의 실행 시간은 전체 베팅 수(시도 횟수 * 평균 베팅 수)에 비례한다. 예를 들어 마지막 실험에서는 거의 난수를 1
억 번 생성해야 했다.