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

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

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 소스 코드[ | ]

PHP
Copy
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);
}
Loading
→ 사람들이 낸 것의 종류가 몇가지인지 확인 ($rps_count)
→ $rps_count는 1~3의 값을 가짐
→ 1이면 모두 같은 것을 낸 경우이므로 비김
→ 3이면 가위, 바위, 보가 섞여 나온 경우이므로 비김
→ 즉 2가 아니면 비기는 경우의 수 증가( $tie_count++ )

3 실행 결과[ | ]

text
Copy
 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가지 밖에 낼 수 없다...
  • PHP 파일 다운로드 구현 2 (한글 파일명 지원)
    제가 파일다운로드 관련된 것이 서툴러서 파일 다운로드 부분을 인용하였습니다. 죄송합니다.
  • PHP에서 오라클 DB 사용
    감사합니당. YoWu
  • PHP 파일 업로드 구현
    파일정보 출력에서 $name $ext 가 정상적으로 출력되나요? 전부 echo의 쌍따옴표안에 있는데? 일리단사오육칠
  • PHP 파일 업로드 구현
    PHP echo에서 쌍따옴표 안의 변수는 해석되어 출력됩니다. 위 소스에서도 $name와 $ext가 두껍게 나와있죠? 일반 문자열과는 다르다는 표시죠.J Jmnote
  • PHP 파일 다운로드 구현 2 (한글 파일명 지원)
    'Windows NT 6.1' << 이부분은 접속한 윈도우의 플랫폼을 뜻하는걸로 압니다. ie11 접속하면 다음과 같이 바뀌었고 Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko rv:11.0 << 이부분이 Anmkst
  • Lib my.php
    Fatal error: Uncaught Error: Call to undefined function insert_rows() in D:\xampp\htdocs\naru\import_excel.php:38 Stack trace: #0 {main} thrown in D:\xampp\htdo 신정섭
  • Lib my.php
    함수 query()를 사용하면 됩니다. 예시 추가했으니 참고바랍니다.J Jmnote
  • 로또번호 생성
    초보를 위한 개발 실습 과제로군요 ㅎㅎ Pinkcrimson