2023년 확통 29번
위 문제를 GPT4로 해결해보자.
프롬프트를 잘 만들어야한다.
프롬프트 |
1, 2, 3, 4, 5, 6이 적힌 카드가 있습니다. 뒷면에는 숫자가 없습니다. 주사위를 굴립니다. 주사위가 나온 숫자가 적힌 카드를 뒤집습니다. 이 과정을 3번 반복합니다. 그 뒤에 카드에 보이는 숫자들의 합을 구합니다. 짝수가 나오면 count1합니다. count1을 할 때, 주사위에 1이 한번만 나왔던 경우 count2를 합니다. 위 전체 과정을 A라고 부르겠습니다. A를 1000번 한 뒤에 count2/count1를 구합니다. count2/count1를 1000번 구한 뒤에 그 평균을 구할 수 있도록 합니다. |
결과 |
import random def flip_cards_and_count(): # 초기 카드 상태 설정 (모든 카드가 앞면으로 가정) cards = [False] * 6 # False는 앞면, True는 뒷면을 의미 count1 = 0 count2 = 0 one_count = 0 # 1이 나온 횟수를 세기 위한 변수 for _ in range(1000): one_count_this_round = 0 # 이번 시행에서 1이 나온 횟수 for _ in range(3): roll = random.randint(1, 6) # 주사위를 굴림 if roll == 1: one_count_this_round += 1 cards[roll - 1] = not cards[roll - 1] # 해당 카드의 상태를 뒤집음 sum_of_visible_numbers = sum(i + 1 for i, card in enumerate(cards) if not card) # 보이는 카드의 숫자 합 cards = [False] * 6 # 카드 상태 초기화 if sum_of_visible_numbers % 2 == 0: # 짝수인 경우 count1 += 1 if one_count_this_round == 1: # 1이 한 번만 나온 경우 count2 += 1 return count2 / count1 if count1 else 0 # count1이 0이 아닐 경우에만 나눗셈 수행 # A 과정을 1000번 실행하고 결과 출력 result = flip_cards_and_count() print(f"count2/count1 = {result}") import random def flip_cards_and_count(): cards = [False] * 6 # False는 앞면, True는 뒷면을 의미 count1 = 0 count2 = 0 for _ in range(1000): # A 과정을 1000번 반복 one_count_this_round = 0 # 이번 시행에서 1이 나온 횟수 for _ in range(3): roll = random.randint(1, 6) # 주사위를 굴림 if roll == 1: one_count_this_round += 1 cards[roll - 1] = not cards[roll - 1] # 해당 카드의 상태를 뒤집음 sum_of_visible_numbers = sum(i + 1 for i, card in enumerate(cards) if not card) # 보이는 카드의 숫자 합 cards = [False] * 6 # 카드 상태 초기화 if sum_of_visible_numbers % 2 == 0: # 짝수인 경우 count1 += 1 if one_count_this_round == 1: # 1이 한 번만 나온 경우 count2 += 1 return count2 / count1 if count1 else 0 # count1이 0이 아닐 경우에만 나눗셈 수행 def average_of_ratios(n): ratios = [flip_cards_and_count() for _ in range(n)] # n번 반복하여 비율 계산 average_ratio = sum(ratios) / n # 평균 비율 계산 return average_ratio # 100번 반복하여 count2/count1의 평균 비율 계산 average_ratio = average_of_ratios(1000) print(f"The average of count2/count1 over 1000 trials is: {average_ratio}") |
실행결과
계산 결과 : 0.36144462...
정답은 13/36 = 0.36111111...이다.
객관식이었으면 맞췄음.
댓글 0