여러 명 가위바위보 비길 확률

(여러 명이 가위바위보할 때 비길 확률에서 넘어옴)

1 개요[ | ]

probability of tie in rock-paper-scissors
가위바위보 비길 확률
여러 명이 가위바위보할 때 비길 확률
n명이 가위바위보할 때 비길 확률
  • (각 개인이 완전히 랜덤이라고 가정함)
  • 2~3 명일 때 33.33 % (3판 중 1판 비김)
  • 4 명일 때 대략 50% (2판 중 1판 비김) ★
  • 6 명일 때 대략 75% (4판 중 3판 비김) ★
  • 7 명일 때 대략 80% (5판 중 4판 비김) ★
  • 8 명일 때 대략 90% (10판 중 9판 비김)
  • 10 명일 때 대략 95% (20판 중 19판 비김)

2 소스 코드[ | ]

function generate_cases($num) {
	$rpss = [['가위'], ['바위'], ['보']];
	if($num < 2) return $rpss;
	$cases = generate_cases($num-1);
	$new_cases = [];
	foreach($cases as $case) {
		foreach($rpss as $rps) {
			$temp = $case;
			$temp[] = $rps[0];
			$new_cases[] = $temp;
		}
	}
	return $new_cases;
}

function count_cases($num) {
	$cases = generate_cases($num);
	$tie_count = 0;
	foreach($cases as $case) {
		$rps_count = count( array_unique($case) );
		if($rps_count != 2) $tie_count++;
	}
	return [count($cases), $tie_count];
}

for($i = 1; $i <= 10; $i++ ) {
	list($total_count, $tie_count) = count_cases($i);
	echo sprintf("%2d 명일 때 비길 확률 = %5d / %5d = %6.1f %%\n", $i, $tie_count, $total_count, 100 * $tie_count / $total_count);
}
→ 사람들이 낸 것의 종류가 몇가지인지 확인 ($rps_count)
→ $rps_count는 1~3의 값을 가짐
→ 1이면 모두 같은 것을 낸 경우이므로 비김
→ 3이면 가위, 바위, 보가 섞여 나온 경우이므로 비김
→ 즉 2가 아니면 비기는 경우의 수 증가( $tie_count++ )

3 실행 결과[ | ]

 1 명일 때 비길 확률 =     3 /     3 =  100.0 %
 2 명일 때 비길 확률 =     3 /     9 =   33.3 %
 3 명일 때 비길 확률 =     9 /    27 =   33.3 %
 4 명일 때 비길 확률 =    39 /    81 =   48.1 %
 5 명일 때 비길 확률 =   153 /   243 =   63.0 %
 6 명일 때 비길 확률 =   543 /   729 =   74.5 %
 7 명일 때 비길 확률 =  1809 /  2187 =   82.7 %
 8 명일 때 비길 확률 =  5799 /  6561 =   88.4 %
 9 명일 때 비길 확률 = 18153 / 19683 =   92.2 %
10 명일 때 비길 확률 = 55983 / 59049 =   94.8 %
→ 사실 1명일 때는 상대방이 없으므로 비겼는지 여부가 의미 없다...
→ 여기서는 모든 참가자들이 낸 것을 종류별로 나누었을 때 1가지 또는 3가지이면 비긴 경우로 판단하였으므로 비긴 것으로 분류된 것[1]

4 같이 보기[ | ]

5 참고[ | ]

  1. 혼자서는 1가지 밖에 낼 수 없다...
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}