Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

순차적 블랙잭

이 예제에서는 21(Twenty One)이라고도 불리는 블랙잭 카드 게임을 합니다. 한 번에 수천 판을 독립적으로 플레이하는 여러 플레이어를 시뮬레이션하고 결과의 통계량을 표시합니다. 블랙잭 게임의 시뮬레이션은 금융 상품에 대한 몬테카를로 분석의 대표적인 예입니다. 마지막에 이루어지는 데이터 수집을 제외하고 시뮬레이션은 완전히 병렬로 실행할 수 있습니다.

계산에 대한 자세한 내용은 pctdemo_setup_blackjack 코드를 확인하십시오.

관련 예제:

예제 설정 및 데이터 불러오기

예제 난이도를 지정하는 것부터 시작하겠습니다. 다른 예제 난이도를 사용하려면 paralleldemoconfig를 사용한 다음, 이 예제를 다시 실행하십시오.

difficulty = pctdemo_helper_getDefaults();

pctdemo_setup_blackjack에서 플레이어 수와 각 플레이어가 플레이하는 판의 수를 가져옵니다. difficulty 파라미터는 시뮬레이션하는 플레이어의 수를 제어합니다. pctdemo_setup_blackjack 코드를 통해 자세한 내용을 확인할 수 있습니다.

[fig, numHands, numPlayers] = pctdemo_setup_blackjack(difficulty);

시뮬레이션 실행하기

pctdemo_task_blackjack을 사용하여 numHands번의 판을 플레이하는 단일 플레이어를 시뮬레이션하고 이 함수를 numPlayers번 호출하여 모든 플레이어를 시뮬레이션합니다. 함수의 개별 호출은 서로 독립적이기 때문에 Parallel Computing Toolbox를 사용하여 이러한 시뮬레이션을 쉽게 수행할 수 있습니다. pctdemo_task_blackjack 코드를 통해 자세한 내용을 확인할 수 있습니다.

startTime = clock;
S = zeros(numHands, numPlayers); % Preallocate for the results.
for i = 1:numPlayers
    S(:, i) = pctdemo_task_blackjack(numHands, 1);
end

경과 시간 측정하기

순차 시뮬레이션에 사용된 시간을 Distributed Blackjack 예제에서 Parallel Computing Toolbox를 사용하여 동일한 계산 세트를 수행하는 데 걸리는 시간과 비교해야 합니다. 경과 시간은 기본 하드웨어에 따라 다릅니다.

elapsedTime = etime(clock, startTime);
fprintf('Elapsed time is %2.1f seconds\n', elapsedTime);
Elapsed time is 34.7 seconds

결과 플로팅하기

신뢰구간과 함께 각각의 판에서 이기거나 지는 베팅의 예상 비율을 표시합니다. 또한 시뮬레이션한 각 플레이어의 승패의 변화를 표시합니다. pctdemo_plot_blackjack 코드를 통해 자세한 내용을 확인할 수 있습니다.

pctdemo_plot_blackjack(fig, S);