- 세상의 모든 계산기 수학, 과학, 공학 이야기 확률통계
[확률] - 6/45 로또를 5게임을 선택 했을 때, 당첨 번호 6개가 5게임의 모든 숫자들의 집합에 포함될 확률은?
로또 확률 - 6/45 로또를 5게임을 선택 했을 때, 당첨 번호 6개가 5게임의 모든 숫자들의 집합에 포함될 확률은?
1) 5set 모두 숫자가 안겹치는 경우
: 최상의 경우 1게임이 1등에 당첨 & 나머지 모두 꽝
45개중에 30개 숫자를 선택하고 - > 5게임으로 숫자들을 분배하는 걸로 보면 되니까
- 총 경우의 수: 45개의 숫자 중 30개를 뽑는 경우의 수는 45C30입니다.
- 바람직한 경우의 수: 6개의 당첨 번호를 이미 뽑았다고 가정하면, 나머지 24개 숫자를 45-6=39개의 숫자 중에서 뽑는 경우의 수와 같습니다. 즉, 39C24입니다.
- 확률: 바람직한 경우의 수 / 총 경우의 수 = 39C24 / 45C30
-
통계적 검증
12345678910111213141516171819202122232425from
scipy.special
import
comb
import
random
# Simulate lottery draws (number of simulations)
simulations
=
100000
# Winning numbers (replace with actual winning numbers if desired)
winning_numbers
=
random.sample(
range
(
1
,
46
),
6
)
# Favorable cases count
favorable_cases
=
0
for
_
in
range
(simulations):
# Pick 30 numbers from 45
chosen_numbers
=
random.sample(
range
(
1
,
46
),
30
)
# Check if all winning numbers are included in chosen numbers
if
set
(winning_numbers).issubset(
set
(chosen_numbers)):
favorable_cases
+
=
1
# Probability estimation
probability
=
favorable_cases
/
simulations
# Print result (formatted for readability)
print
(f
"Estimated probability of winning lotto with 30 chosen numbers (all winning numbers included after {simulations} simulations): {probability:.10f}"
)
실행 결과 : Estimated probability of winning lotto with 30 chosen numbers (all winning numbers included after 100000 simulations): 0.0718200000
Estimated probability of winning lotto with 30 chosen numbers (all winning numbers included after 100000 simulations): 0.0733000000
2) 5set 숫자가 서로 겹치는 걸 허용하는 경우
: 최상의 경우 : 5게임을 동일하게 선택하여, 모두 1등 당첨!
- 통계적 검증
실행 결과 :12345678910111213141516171819202122232425262728293031323334353637383940
from
scipy.special
import
comb
import
random
# Simulate lottery draws (number of simulations)
simulations
=
100000
favorable_cases
=
0
# Initialize inside the loop
# Initialize min and max length trackers
min_length
=
float
(
'inf'
)
max_length
=
float
(
'-inf'
)
for
_
in
range
(simulations):
# Winning numbers (replace with actual winning numbers if desired)
winning_numbers
=
set
(random.sample(
range
(
1
,
46
),
6
))
# Generate 5 sets of 6 random numbers
chosen_numbers
=
[random.sample(
range
(
1
,
46
),
6
)
for
_
in
range
(
5
)]
# Flatten the list and remove duplicates
all_numbers
=
list
(
set
([num
for
sublist
in
chosen_numbers
for
num
in
sublist]))
# Update min and max length
current_length
=
len
(all_numbers)
if
current_length < min_length:
min_length
=
current_length
if
current_length > max_length:
max_length
=
current_length
# Check if all winning numbers are included in chosen all numbers
if
set
(winning_numbers).issubset(
set
(all_numbers)):
favorable_cases
+
=
1
# Probability estimation
probability
=
favorable_cases
/
simulations
# Print results
print
(f
"Minimum length of all_numbers across simulations: {min_length}"
)
print
(f
"Maximum length of all_numbers across simulations: {max_length}"
)
print
(f
"Estimated probability of winning lotto with 5 sets of 6 numbers (all winning numbers included after {simulations} simulations): {probability:.10f}"
)
횟수 1억회 시도시
Minimum length of all_numbers across simulations: 13
Maximum length of all_numbers across simulations: 30
Estimated probability of winning lotto with 5 sets of 6 numbers (all winning numbers included after 100000000 simulations): 0.0137585900
수학적 해결 방법
문제 정의
- 전체 숫자: 1부터 45까지 (N = 45)
- 각 게임에서 선택하는 숫자: 6개 (k = 6)
- 게임 수: 5 (m = 5)
- 목표: 5게임에서 선택한 숫자들이 1등 번호 6개를 모두 포함할 확률 계산
수학적 접근
1. 한 게임에서 특정 숫자를 선택할 확률:
P(선택) = 6/45 = 2/152. 한 게임에서 특정 숫자를 선택하지 않을 확률:
P(선택하지 않음) = 1 - 2/15 = 13/153. 5게임 모두에서 특정 숫자를 선택하지 않을 확률:
P(5게임 모두 선택하지 않음) = (13/15)^54. 5게임 중 적어도 한 번 특정 숫자를 선택할 확률:
P(적어도 한 번 선택) = 1 - P(5게임 모두 선택하지 않음)
= 1 - (13/15)^55. 6개의 당첨 번호 모두가 5게임 중 적어도 한 번씩 선택될 확률:
P(모든 당첨 번호 포함) = (1 - (13/15)^5)^6
반대의 경우 :
1등 번호가 5게임의 숫자에 아무것도 들어기지 않는 경우
댓글 11
-
-
-
제시된 문제: (중복 포함시)
로또 6/45에서 5세트의 번호를 조합하여 하나의 큰 집합을 만들고, 이 집합 안에 당첨 번호 6개가 모두 포함될 확률을 구하는 문제입니다. 조합된 집합의 총 숫자는 6개(모두 중복)에서 30개(하나도 중복되지 않음) 사이가 될 수 있습니다.
해결 방안:
- 표본 공간: 1부터 45까지의 숫자 중 6개를 선택하는 모든 경우의 수 (45C6)
- 사건: 조합된 집합 안에 당첨 번호 6개가 모두 포함되는 경우
- 확률: 위 사건이 발생할 확률
문제점:
- 조합된 집합의 크기가 가변적: 조합된 집합의 크기가 6개에서 30개까지 다양하기 때문에 단순한 조합 계산으로는 해결하기 어렵습니다.
- 중복 고려: 조합된 집합 내에 숫자가 중복될 수 있는 경우를 고려해야 합니다.
해결을 위한 접근 방식:
-
보수 사건 계산(=여집합 계산):
- 조합된 집합에 당첨 번호가 하나라도 빠지는 경우를 계산하는 것이 더 효율적입니다.
- 각 당첨 번호가 조합된 집합에 포함될 확률을 구하고, 이들의 보수를 취합니다.
-
포함-배제의 원리:
- 여러 사건이 동시에 발생할 확률을 계산하는 데 유용한 방법입니다.
- 각 당첨 번호가 조합된 집합에 포함될 확률과, 두 개의 당첨 번호가 동시에 포함될 확률, 세 개의 당첨 번호가 동시에 포함될 확률 등을 계산하여 포함-배제의 원리를 적용합니다.
-
-
-
TI-Nspire 시뮬레이션
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950Define lotto5(n,un)=
Prgm
:Local i,j,k,l,match,favor,f_case
:0→f_case
:If un=0 Then
: un=0
:Else
: un=1
:EndIf
:
:For k,1,n
:randSamp(l45,6,1)→l6
:{}→l30
:
:If un=1 Then
: randSamp(l45,30,un)→l30
:Else
: For l,1,5
: augment(l30,randSamp(l45,6,1))→l30
: EndFor
:EndIf
: 1→favor
:
:
:For i,1,dim(l6)
: 0→match
:
: For j,1,dim(l30)
: If l6[i]=l30[j] Then
: 1→match
: Exit
: EndIf
: EndFor
:
: If match=0 Then
: 0→favor
: Exit
: EndIf
:EndFor
:
:
:If favor=1 Then
: f_case+1→f_case
:
:EndIf
:
:EndFor
:Disp "f_case/total=",approx(((f_case)/(n)))*100,"(%)"
:
:EndPrgm
-
-
-
lotto5(100000,1) 5회 결과:
ㄴ f_case/total= 7.297(%),
ㄴ f_case/total= 7.06(%)
ㄴ f_case/total= 7.263(%)
ㄴ f_case/total= 7.328(%)
ㄴ f_case/total= 7.324(%)
이론상 수치인 7.29%와 거의 유사함.
-
-
-
lotto5(100000,0) 5회 결과:
ㄴ f_case/total= 1.366(%),
ㄴ f_case/total= 1.445(%)
ㄴ f_case/total= 1.391(%)
ㄴ f_case/total= 1.312(%)
ㄴ f_case/total= 1.361(%)
이론상 수치인 1.78% 보다 낮고,
python 시뮬레이션 결과인 1.375859 % 와 매우 유사함.
-
-
-
binomPdf(6,(13/15)^(5))
{0.017815713785677,0.10226987830344,0.24461383112924,0.31204196776788,0.22390692882904,0.085688153870291,0.01366352631444}
binomPdf(6,1-(13/15)^(5))
{0.01366352631444,0.085688153870289,0.22390692882904,0.31204196776788,0.24461383112924,0.10226987830344,0.017815713785677}
이항 분포를 이용한 로또 확률 계산 가능한가?
binomPdf 함수 설명binomPdf(n, p)는 이항 분포의 확률 분포 함수(PDF)를 계산합니다.
- n: 시행 횟수
- p: 각 시행에서의 성공 확률
로또 문제에 적용- n = 6 (당첨 번호의 개수)
- p = (13/15)^5 (5게임 모두에서 특정 번호가 포함되지 않을 확률)
결과 해석 (필요)binomPdf(6, (13/15)^5,0) = 0.017815713785677 // AI가 잘 못 알려준 이론적인 확률과 같음.
binomPdf(6, 1-(13/15)^5,0) = 0.01366352631444 // 시뮬레이션 결과와 유사한데, 단지 우연일 뿐. 찾고자 하는 답이 아님.
포함-배제 원리와의 비교
- 이 방법은 포함-배제 원리를 사용한 복잡한 계산을 피하고, 직접적으로 원하는 확률을 계산합니다.
결론binomPdf 함수를 사용하는 이 방법이 주어진 로또 문제를 해결할 수 없습니다.
-
-
-
네, 맞습니다. 이제 이론적 확률과 시뮬레이션 결과가 매우 근접합니다. 이론적 확률 계산 알고리즘을 설명해 드리겠습니다.
이 알고리즘은 포함-배제의 원리를 사용하여 정확한 확률을 계산합니다. 주요 단계는 다음과 같습니다:
1. 전체 경우의 수 계산:
- 45개 숫자 중 6개를 선택하는 방법의 수를 5번 곱합니다.
- `total_ways = math.comb(total_numbers, numbers_per_set) ** num_sets`2. 유리하지 않은 경우의 수 계산:
- 6개의 당첨 번호 중 1개에서 6개까지 빠지는 모든 경우를 고려합니다.
- 각 경우에 대해 포함-배제의 원리를 적용합니다.3. 포함-배제의 원리 적용:
- 1개 숫자가 빠진 경우를 더하고,
- 2개 숫자가 빠진 경우를 빼고,
- 3개 숫자가 빠진 경우를 더하고,
- ...
- 이를 6개 숫자가 빠진 경우까지 반복합니다.4. 최종 확률 계산:
- 1에서 (유리하지 않은 경우의 수 / 전체 경우의 수)를 뺍니다.코드의 핵심 부분을 자세히 설명하면:
1234567891011121314151617def
theoretical_probability():
total_numbers
=
45
numbers_per_set
=
6
num_sets
=
5
# Total number of ways to choose 5 sets of 6 numbers
total_ways
=
math.comb(total_numbers, numbers_per_set)
*
*
num_sets
# Number of ways to choose 5 sets that don't include all winning numbers
unfavorable_ways
=
0
for
i
in
range
(
1
,
7
):
# 1 to 6 missing numbers
for
missing_combo
in
combinations(
range
(
6
), i):
ways_without_missing
=
math.comb(total_numbers
-
i, numbers_per_set)
*
*
num_sets
unfavorable_ways
+
=
(
-
1
)
*
*
(i
+
1
)
*
ways_without_missing
# Probability of including all winning numbers
return
1
-
(unfavorable_ways
/
total_ways)
- `i`는 빠진 당첨 번호의 개수입니다.
- `missing_combo`는 빠진 당첨 번호의 조합입니다.
- `ways_without_missing`는 특정 숫자들이 빠진 상태에서 5세트를 선택하는 방법의 수입니다.
- `(-1)**(i+1)`은 포함-배제 원리에 따라 더하거나 빼는 역할을 합니다.최종적으로, 이 알고리즘은 모든 가능한 경우를 정확히 고려하면서도 계산을 효율적으로 수행합니다. 이는 직접적인 열거 방식보다 훨씬 빠르고 정확한 결과를 제공합니다.
이 방법의 장점은 다음과 같습니다:
1. 정확성: 모든 가능한 경우를 빠짐없이 고려합니다.
2. 효율성: 직접적인 열거 대신 조합론적 접근을 사용하여 계산 속도를 높입니다.
3. 일반성: 숫자나 세트의 수를 쉽게 변경할 수 있어 다양한 상황에 적용 가능합니다.이 알고리즘을 통해 우리는 로또 6/45에서 5세트의 번호를 선택할 때, 6개의 당첨 번호가 모두 포함될 확률이 약 1.37585%임을 정확히 계산할 수 있었습니다.
-
-
-
실행 1회차
Theoretical probability: 0.0137584627
Simulated probability: 0.0137510000
Difference: 0.0000074627실행 2회차
Theoretical probability: 0.0137584627
Simulated probability: 0.0136120000
Difference: 0.0001464627
-
-
-
수학적 수식으로 나타내면?
6/45 로또에서 5개 세트를 선택할 때 6개의 당첨 번호를 모두 포함할 확률 P는 다음과 같이 표현될 수 있습니다.
여기서:
는 45개의 숫자 중에서 6개의 숫자를 선택하는 5개 세트의 총 가짓수를 나타냅니다. 는 모든 당첨 번호를 포함하지 않는 5개 세트를 선택하는 가짓수로, 포함-배제 원리를 사용하여 계산됩니다.
용어 설명:
는 빠진 당첨 번호의 개수(1에서 6까지)를 나타냅니다. 는 6개의 당첨 번호 중에서 i개의 빠진 번호를 선택하는 가짓수입니다. 는 나머지 (45-i)개의 숫자 중에서 6개의 숫자를 선택하는 5개 세트의 가짓수입니다. 은 포함-배제 원리에 따라 덧셈과 뺄셈을 번갈아 가며 적용합니다
-
-
-
AI에서는 자꾸 이런식으로 알려줘서 오류
-
-
-
등위별 당첨 확률
등위 당첨방법 당첨확률 당첨금의 배분 비율 1등 6개 번호 일치.
ncr(6,6)=1
1 / 8,145,060
=0.00001228%
총 당첨금 중 4등, 5등 금액을 제외한 금액의 75% 2등 5개 번호 일치
+ 보너스 번호일치nCr(6,5)*nCr(1,1)=6
1 / 1,357,510
=0.00007366%총 당첨금 중 4등, 5등 금액을 제외한 금액의 12.5% 3등 5개 번호 일치
nCr(6,5)*nCr(45-6-1,1)=228
19 / 678755
=0.00279924%
총 당첨금 중 4등, 5등 금액을 제외한 금액의 12.5% 4등 4개 번호 일치
nCr(6,4)*nCr(45-6,2)=11115
741 / 543004
=0.136463083%
50,000원 5등 3개 번호 일치
nCr(6,3)*nCr(45-6,3)=182780
9139 / 407253
=2.244059589%
5,000원 * 참고 :
-
포함-배제 원리를 사용하여 1등 번호 6개가 5개의 게임에서 모두 포함될 확률을 구하는 방법
1. 포함-배제 원리 개요
포함-배제 원리를 사용하여 "적어도 하나의 숫자가 포함되지 않는 경우"의 확률을 구한 후, 이를 통해 "모든 숫자가 포함되는 경우"의 확률을 구합니다.
문제 정의:
- 전체 숫자 집합: 45개
- 게임에서 선택하는 숫자: 6개
- 게임 수: 5개
- 1등 번호: 6개 (이 숫자들이 5게임 모두에 포함되기를 원함)
2. 포함-배제 원리를 적용한 확률 계산
1. 단일 숫자가 포함되지 않을 확률:
단일 숫자가 한 게임에서 선택되지 않을 확률은:
2. 적어도 하나의 1등 번호가 포함되지 않을 확률:
포함-배제 원리를 사용하여, 적어도 하나의 1등 번호가 5개의 게임 중 적어도 하나의 게임에서 포함되지 않는 확률을 구합니다.
- : 1등 번호의 -번째 숫자가 포함되지 않은 경우의 사건.
여기서 는 개의 특정 숫자가 게임에서 모두 선택되지 않는 사건입니다.
- 한 숫자가 포함되지 않는 확률:
- 두 숫자가 포함되지 않는 확률:
두 숫자가 모두 포함되지 않을 확률은 43개의 숫자 중 6개를 선택하는 경우로 계산할 수 있습니다.
- 일반화:
i개의 숫자가 모두 포함되지 않을 확률은:
이 값을 포함-배제 원리에 따라 합산하여 적어도 하나의 1등 번호가 포함되지 않을 확률을 구합니다.
3. 최종 확률 계산
모든 1등 번호가 5개의 게임에 모두 포함될 확률은:
포함-배제 원리를 사용한 수식 예시:
예를 들어, 1등 번호의 6개 중 하나라도 포함되지 않을 확률을 계산하는 과정은 다음과 같습니다:
이 경우, 실제 계산은 다음과 같습니다:
- :
- :
- 계속하여 i = 3, 4, 5, 6에 대해서도 계산을 수행합니다.
이러한 계산들을 포함-배제 원리에 따라 합산하여 최종 확률을 구합니다.
위 수식들을 계산하여 결과를 도출할 수 있습니다. 컴퓨터를 사용하여 이 계산을 자동화하면 더 효율적으로 정확한 결과를 얻을 수 있습니다.