فرض کنید $n$ سکهی ناسالم (biased) موجود بوده که احتمال رو شدن شیر برای هر یک برابر $p$ است. با پرتاب تمامی سکهها به صورت همزمان، احتمال این که تعداد شیرها بیشتر از خطها باشد چقدر است؟ (یعنی بیش از نیمی از سکهها، شیر را نشان دهند — میتوانید فرض کنید که $n$ عددی فرد است)
با جستجو برای یافتن راه حل، به مسئلهای مشابه بر خوردم که پیرامون پرتاب یک سکهی ناسالم به تعداد $n$ مرتبه است. در صورتی که یک مرتبه پرتاب $n$ سکه، همارز با با $n$ مرتبه پرتاب یک سکه باشد، پیشنهاد شده است که احتمال مطلوب را با روش زیر محاسبه کرد:
$$\sum_{k=0}^{\left\lfloor\frac n2\right\rfloor}{n\choose k}p^{n-k}(1-p)^k$$
در هر صورت، این پایان مسئله نیست. اکنون فرض کنید که $m$ گروه داریم (مجدداً برای سهولت در محاسبات میتوانید آن را عددی فرد فرض کنید) که هر یک شامل $n$ سکه از نوع بالا میشود. اگر اکثریت سکههای یک گروه شیر را نشان دهند، خروجی گروه برابر با $1$ خواهد بود. در غیر این صورت، خروجی گروه ممکن است به احتمال $q$ همچنان برابر $1$ و به احتمال $(1-q)$ برابر $0$ شود. حال اگر خود گروهها نیز یک ابر-گروه با قوانینی مشابه (خروجی $1$ اگر اکثریت زیرگروهها $1$ را نشان دهند؛ در غیر این صورت $1$ به احتمال $q$ و $0$ به احتمال متمم آن) تشکیلدهند، احتمال به دست آمدن $1$ به عنوان خروجی نهایی ابر-گروه چقدر است؟
پینوشت: من این مسئله را به فرض $n=3$، $m=3$، $p=0.7$ و $q=0.1$ در کد زیر به زبان برنامهنویسی Python شبیهسازی کردهام:
import random
import statistics
def weighted_random(p):
return 1 if random.random() < p else 0
def C():
"""
Coin flip function
"""
return weighted_random(0.7) # p
def B(*args):
"""
Batch voting function
"""
majority = statistics.mode([*args])
if majority == 0:
return weighted_random(0.1) # q
return 1
def test_megabatch(epochs=1_000):
sum = 0
for _ in range(epochs):
c1 = C()
c2 = C()
c3 = C()
c4 = C()
c5 = C()
c6 = C()
c7 = C()
c8 = C()
c9 = C()
b1 = B(c1, c2, c3)
b2 = B(c4, c5, c6)
b3 = B(c7, c8, c9)
b = B(b1, b2, b3)
sum +=b
return sum
print(test_megabatch(10_000) / 10_000) # approximately 0.91
ولی لازم دارم که مسئله را حل کرده و به یک راهحل تعمیمیافته برسم.