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가지 밖에 낼 수 없다...
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.
PHP 파일 다운로드 구현 2 (한글 파일명 지원) ― …PHP에서 오라클 DB 사용 ― YoWuPHP 파일 업로드 구현 ― 일리단사오육칠PHP 파일 업로드 구현 ― JmnotePHP 파일 다운로드 구현 2 (한글 파일명 지원) ― AnmkstLib my.php ― 신정섭Lib my.php ― Jmnote로또번호 생성 ― Pinkcrimson