๐Ÿ”ฐ๋ชฌํ…Œ์นด๋กœ๋ฒ•์œผ๋กœ ์นด๋“œ 1์ธ์šฉ ๊ฒŒ์ž„'์‹œ๊ณ„'์˜ ์„ฑ๊ณต ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋Š” ์ด์•ผ๊ธฐ๐Ÿ”ฐ

์ด ๋ฌธ์žฅ์— ๊ด€ํ•˜์—ฌ


์ด ๊ธ€์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๊ฐ€ ๋ฐฉ๊ธˆ ๊ธฐ์–ตํ•œ ๋ชฌํ…Œ์นด๋กœ๋ฒ•์„ ์‚ฌ์šฉํ•œ ์ด์•ผ๊ธฐ๋‹ค.
๋“ฑ์žฅํ•œ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ ์˜ค๋žœ ์˜๋ฌธ๋“ค์„ ์ž์‹ ์˜ ์†์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ์˜๋‹ค๊ณ  ๋ณด๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์ข…์ ์œผ๋กœ ์–ป์€ ํ™•๋ฅ (์ƒ๋‹นํžˆ ์˜ˆ์œ ๊ฐ’)์˜ ์ˆ˜์น˜์  ์˜๋ฏธ์— ๋Œ€ํ•ด ๊ณ ์ฐฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•๋ฅ ์— ๋Šฅํ•œ ์‚ฌ๋žŒ์€ ๋ฐ˜๋“œ์‹œ ์ €์—๊ฒŒ ์•Œ๋ ค์ฃผ์„ธ์š”.

์‹œ๊ณ„


1์ธ ํฌ์ปค ๊ฒŒ์ž„์œผ๋กœ ๊ทœ์น™์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.
๋˜ํ•œ ์œ ์ €์˜ ์˜์ง€๊ฐ€ ์‚ฝ์ž…๋  ์—ฌ์ง€๊ฐ€ ์—†๋Š” ์™„์ „ํ•œ ๊ทœ์น™์  ๊ธฐ๋ฐ˜์˜ ์šด๊ฒŒ์ž„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฆ๊ฑฐ์›€์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
์ค€๋น„
์ž˜ ์ž๋ฅธ ์นด๋“œ 52์žฅ์„ ๊ทธ๋ฆผ์œผ๋กœ 13๋ฌด๋”๊ธฐ๋กœ ๋‚˜๋ˆˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ์‹œ๊ณ„์˜ ์‹œ๊ณ„ํŒ์— ๋น„์œ ํ•˜์—ฌ ๊ฐ ์‚ฐ์—์„œ ์ˆซ์ž๋ฅผ ๋ถ„๋ฐฐํ•œ๋‹ค.
๋‚˜๋จธ์ง€ ์ค‘์‹ฌ์‚ฐ์€ ๋ฏธ๋ด‰์ฑ…์œผ๋กœ ๋ถ„๋ฐฐํ•ด ์ฃผ์‹ญ์‹œ์˜ค.
ใ€€ใ€€

[๊ทœ์น™]
1. ๋งจ ์œ„์— ์žˆ๋Š” ์นด๋“œ 13๋”๋ฏธ๋ฅผ ๋’ค์ง‘๋Š”๋‹ค.
2. ๋’ค์ง‘ํžŒ ์นด๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ด๋ฒˆ์—๋Š” ๊ทธ ๋ฒˆํ˜ธ๊ฐ€ ์Œ“์ธ ๋งจ ์œ„์— ์žˆ๋Š” ์นด๋“œ๋ฅผ ๋’ค์ง‘๋Š”๋‹ค.
3. ๊ณ„์†ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด 2์˜ ์ผ์„ ๊ณ„์†ํ•œ๋‹ค.
4. 4์žฅ 13์ด ๋‚˜์™”์„ ๋•Œ ๋’ค์ง‘์€ ์นด๋“œ๊ฐ€ ์—†์–ด์กŒ๊ณ  ๊ฒŒ์ž„์ด ๋๋‚ฌ๋‹ค.
5. ๋ชจ๋“  ์นด๋“œ๋ฅผ ๋’ค์ง‘์œผ๋ฉด ์„ฑ๊ณตํ•œ๋‹ค. ๊ทธ ์™ธ์—๋Š” ์ผ๋ฅ ์ ์œผ๋กœ ์‹คํŒจํ•œ๋‹ค.
๋ญ ๊ณต๋ถ€ ํ•ด์š”?๋‚ด ์ƒ๊ฐ์—๋„ ์ด๋Ÿฐ ์‚ฌ๋žŒ์ด ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, 13์‚ด์ด ๋˜๋ฉด ์ˆ˜๋ช…์ด ์ค„์–ด๋“œ๋Š” ์ด๋Ÿฐ ์•„์Šฌ์•„์Šฌํ•จ์€ ์˜์™ธ๋กœ ์ค‘๋…์„ฑ์ด ์žˆ๋‹ค.
๋‚˜ ์ž์‹ ์€ ์‹œํ—˜ ์ „์•ผ์˜ ํ˜„์‹ค์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ปค์— ์†์„ ๋ป—๊ณ '์ง€๋‚œ๋ฒˆ์— ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ž'๊ณ  ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ์ด ๊ธฐ์‚ฌ๋ฅผ ์“ฐ๊ณ  ์žˆ๋‹ค.

์ข…์ด, ํŽœ, ๋‡Œ์žฅ์œผ๋กœ ์„ฑ๊ณต ํ™•๋ฅ ์„ ๊ณ ๋ คํ•ด ๋ณด์ž


์ง๊ฐ์ ์œผ๋กœ ๋‚˜๋Š” ์„ฑ๊ณต ํ™•๋ฅ ์ด 1/13์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
์ธ์ƒ์œผ๋กœ ๊ธธ์ด 52์˜ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ 13์ด๋ผ๋ฉด ์„ฑ๊ณต์ด๊ณ , ๊ทธ ์™ธ์—๋Š” ์‹คํŒจ๋‹ค.
ํ•˜์ง€๋งŒ ์ƒ๊ฐํ• ์ˆ˜๋ก ์ด๋Ÿฐ ๋‹จ์ˆœํ•จ์€ ๋ฉˆ์ถœ ์ˆ˜ ์—†๋‹ค.
์•„๊นŒ์˜ ์˜ˆ๋กœ ๋งํ•˜์ž๋ฉด ์‹œ๊ณ„๋Š” ๋ชฉ๋ก์˜ ์š”์†Œ์— ์˜ํ•ด ๋ชฉ๋ก ์•ˆ์—์„œ ์ด๋™ํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
์ด๋Ÿฐ ๋ณต์žก์„ฑ์€ ์ข…์ด, ํŽœ, ๋‡Œ๋ฏธ์ฆ์˜ ๋ถ€๋‹ด์ด ์ข€ ์ปค์„œ ๋ฐฉ๊ธˆ ๋ฐฐ์šด ๋ชฌํ…Œ์นด๋กœ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋ชฌํ…Œ์นด๋กœํŒŒ


๋ชฌํ…Œ์นด๋กœ๋ฒ•์„ ํ•œ๋งˆ๋””๋กœ ์„ค๋ช…ํ•˜๋ฉด
์‹ค์ œ๋กœ๋Š” ๋ช‡ ์ฐจ๋ก€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ•ด ๋ณด๊ณ  ์„ฑ๊ณต ํ™•๋ฅ ์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ด๋ฒˆ์—๋Š” Python์œผ๋กœ ํ•˜์—ฌ๊ธˆ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ์„ฑ๊ณต ํšŸ์ˆ˜/์‹œํ—˜ ํšŸ์ˆ˜๋ฅผ ์ธก์ •ํ•˜๊ฒŒ ํ–ˆ๋‹ค.
์›์ฃผ์œจ ๊ณ„์‚ฐ ๋“ฑ ์œ ๋ช…ํ•œ ๊ธฐ๋ฒ•์ด๋ผ ์•„๋Š” ์‚ฌ๋žŒ์ด ๋งŽ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์‹ฌ์‹ฌํ•œ ์ผ์€ ํŒŒ์ด์ฌ์ด ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


์šฐ์„  ์นด๋“œ๋ฅผ ์”ป๊ณ  52์žฅ์„ ๋ฐฐ์—ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋‹ค.
def shuffle(): #52ๆžšใฎใ‚ซใƒผใƒ‰ใ‚’ไธฆในใ‚‹
  shuffle =[1,2,3,4,5,6,7,8,9,10,11,12,13]
  shuffle += shuffle + shuffle + shuffle
  random.shuffle(shuffle)
  return shuffle
๊ฒŒ์ž„์€ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ.
๊ฒŒ์ด๋จธ์˜ ์˜์ง€๋ฅผ ๊บพ์„ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ์™„์ „ ๊ทœ์น™์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์ธ ์šด๊ฒŒ์ž„ ์„ค์น˜๋„ ๊ฐ„๋‹จํ•˜๋‹ค.
๋‚˜๋Š” ์šฐ์„  ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ข…ํ•ฉํ•ด ๋ณด๊ฒ ๋‹ค.
์•„๊นŒ ๋งŒ๋“  52์žฅ์˜ ๋ฆฌ์ŠคํŠธ์™€ ์นด๋“œ์˜ ๋Œ€์‘.
์ƒ‰์ธ: ์‚ฐ
0~3:1์˜ ์‚ฐ
4~7:2์˜ ์‚ฐ
...
(N-1)*4+i(0โ‰คiโ‰ค3): N์˜ ์‚ฐ
์˜ ์–‘๊ณก ํƒ„์  ํŠธ ๊ฐ’์ž…๋‹ˆ๋‹ค.
๋˜ํ•œ ์—ด๊ธฐ ๋™์ž‘์€ ๋ชฉ๋ก์˜ ์š”์†Œ๋ฅผ 0์œผ๋กœ ๋ฐ”๊พธ์–ด ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
def tokei():
  cards = shuffle() #52ๆžšใฎใƒฉใƒณใƒ€ใƒ ใช้…ๅˆ—ใ‚’็”จๆ„
  flag =0
  number = 13 #ๆœ€ๅˆใซ้–‹ใ๏ผ‘๏ผ“
  while flag == 0:
    #print(number) 
    if cards[(number-1)*4] != 0: #ใใฎ็•ชๅทใŒๅˆใ‚ใฆ้–‹ใ‹ใ‚Œใ‚‹ๅ ดๅˆ
      next = cards[(number-1)*4]
      cards[(number-1)*4] = 0
      number = next
    elif cards[(number-1)*4+1] != 0: #ใใฎ็•ชๅทใŒ๏ผ’ๅ›ž็›ฎใซ้–‹ใ‹ใ‚Œใ‚‹ๅ ดๅˆ
      next = cards[(number-1)*4+1]
      cards[(number-1)*4+1] = 0
      number = next
    elif cards[(number-1)*4+2] != 0: #ใใฎ็•ชๅทใŒ๏ผ“ๅ›ž็›ฎใซ้–‹ใ‹ใ‚Œใ‚‹ๅ ดๅˆ
      next = cards[(number-1)*4+2]
      cards[(number-1)*4+2] = 0
      number = next
    elif cards[(number-1)*4+3] != 0: #ใใฎ็•ชๅทใŒ๏ผ”ๅ›ž็›ฎใซ้–‹ใ‹ใ‚Œใ‚‹ๅ ดๅˆ
      next = cards[(number-1)*4+3]
      cards[(number-1)*4+3] = 0
      number = next
    else:                            #13ใŒ4ๆžšๅ‡บใกใ‚ƒใฃใŸๅ ดๅˆor็ต‚ใ‚ใฃใŸๅ ดๅˆ
      flag =1
  return sum(cards)
๋ชฌํ…Œ์นด๋กœํŒŒ๊ฐ€ ๋“œ๋””์–ด ๋“ฑ์žฅํ•œ๋‹ค.
def Monte_Carlo(n):
  N = 0
  for i in range(n):
    if tokei() == 0:
      N += 1
  return N/n
์ง€๊ธˆ ๋งŒ ์›์œผ๋กœ n์„ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.
Monte_Carlo(10000)
0.0787
๊ทธ ์ •๋„ ๊ฐ€๊ฒฉ์ด ๋‚˜์™”์–ด์š”.
ํ†ต๊ณ„๋Š” ์ž˜ ๋ชปํ•˜์ง€๋งŒ 100๋งŒ ๋ฒˆ ์‹œ๋„ํ•˜๋ฉด ์ถฉ๋ถ„ํ•œ๊ฐ€.
print("100ๅ›žใฎ่ฉฆ่กŒใงใฏ "+ str(Monte_Carlo(100)))
print("1000ๅ›žใฎ่ฉฆ่กŒใงใฏ "+ str(Monte_Carlo(1000)))
print("10000ๅ›žใฎ่ฉฆ่กŒใงใฏ "+ str(Monte_Carlo(10000)))
print("100000ๅ›žใฎ่ฉฆ่กŒใงใฏ "+ str(Monte_Carlo(100000)))
print("1000000ๅ›žใฎ่ฉฆ่กŒใงใฏ "+ str(Monte_Carlo(1000000)))
print("1/13 = " + str(1/13))
์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
100ๅ›žใฎ่ฉฆ่กŒใงใฏ 0.07
1000ๅ›žใฎ่ฉฆ่กŒใงใฏ 0.083
10000ๅ›žใฎ่ฉฆ่กŒใงใฏ 0.0736
100000ๅ›žใฎ่ฉฆ่กŒใงใฏ 0.07664
1000000ๅ›žใฎ่ฉฆ่กŒใงใฏ 0.076582
1/13 = 0.07692307692307693
๋‚˜๋Š” ํ†ต๊ณ„๋ฅผ ์ž˜ํ•˜์ง€ ๋ชปํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋Œ€๋žต 13๋ถ„์˜ 1๊นŒ์ง€ ์ˆ˜๋ ด๋œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋ ‡๊ฒŒ ํ•ฉ์‹œ๋‹ค.

์ด๊ด„ํ•˜๋‹ค


์ž์‹ ์˜ ์†์œผ๋กœ ์“ด ์ฝ”๋“œ๋กœ ๊ฒฐ๋ก ์„ ์–ป์–ด ๋งค์šฐ ๊ธฐ๋ปค๋‹ค.
while ๋ฉˆ์ถ”์ง€ ๋ชปํ•ด, ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์ž„๋งŒ ๋„˜๊ธฐ๋ฉด ๋, ๋‘ ๋ฒˆ์งธ ๊ฒŒ์ž„๋งŒ ๋„˜๊ธฐ๋ฉด ๋, ํŒŒ์ดํŒ….
์‹œํ—˜ ์ „์•ผ์— ํ˜„์‹ค์„ ๋„ํ”ผํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฌด์„ญ๋‹ค.
๋‚จ์€ ์˜๋ฌธ์€ ์™œ ์„ฑ๊ณต ํ™•๋ฅ ์ด 1/13(๋˜๋Š” ๊ฐ€๊นŒ์šด ๊ฐ’)์ธ์ง€ ๋‹ค์Œ ํ…Œ์ŠคํŠธ ์ „์— ์ƒ๊ฐํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ด๊ฑธ ์ฝ์œผ์‹  ๋ถ„์€ ๋‹ต์„ ์ฐพ์œผ์‹  ๋ถ„์ด ์žˆ์œผ๋ฉด ๊ผญ ์•Œ๋ ค์ฃผ์„ธ์š”.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ