RoleDealer · Monte Carlo

گزارش کامل تصادفی بودن پخش نقش

این صفحه همان داده‌های آزمایشی الگوریتم واقعی اپ (`RoleDealer`) را به‌صورت خوانا نشان می‌دهد: پخش چندباره، درصدها، جداول و آزمایش شایعه «تازه‌وارد بیشتر مافیا می‌شود».

بازیکن در هر بازی۱۰ نفر (+ رشد ۵→۱۵)
نمونه جزئی۱۰ بازی پشت‌سرهم
مونت‌کارلو۱۰٬۰۰۰ پخش × ۲ چیدمان
آزمایش تازه‌وارد۵۰۰ پخش (Setup C)
RNGkotlin.random.Random
Seedبدون seed (آنتروپی تازه)

روش پخش نقش در اپ

  1. هر نقش به تعداد صندلی‌اش در یک دسته پهن می‌شود (تعداد به نقش گره خورده می‌ماند).
  2. دسته چند بار بر می‌خورد.
  3. لیست بازیکن‌ها چند بار بر می‌خورد.
  4. دسته به بازیکن‌های برخورده اختصاص داده می‌شود و شماره صندلی i + 1 می‌گیرد.
  5. لیست نهایی یک‌بار دیگر بر می‌خورد و برمی‌گردد.

بین بازی‌ها هیچ حافظه‌ای نیست؛ هر پخش از نو با Random ساخته می‌شود و به پخش قبلی وابسته نیست.

Setup A — ۱۰ نقش یکتا

هر نقش دقیقاً یک کپی دارد؛ شانس عادلانه هر بازیکن برای هر نقش ≈ ۱۰٪.

گادفادر مافیا دکتر کارآگاه اسنایپر ناتاشا وکیل شهروند قاضی بمبر

بازیکنان ثابت: علی، سارا، رضا، مریم، حسین، نیما، زهرا، امیر، نازنین، پارسا

۱۰ بازی پشت‌سرهم (همان بازیکن‌ها)

هر سطر یک پخش کامل است؛ سلول‌ها نقش همان بازیکن در آن بازی‌اند.

بازیعلیسارارضامریمحسیننیمازهراامیرنازنینپارسا
1ناتاشاقاضیدکتربمبرمافیااسنایپروکیلکارآگاهشهروندگادفادر
2دکترگادفادربمبرناتاشاقاضیاسنایپرمافیاکارآگاهشهروندوکیل
3اسنایپرکارآگاهدکترناتاشاقاضیوکیلگادفادرشهروندبمبرمافیا
4ناتاشادکترکارآگاهاسنایپروکیلبمبرگادفادرشهروندقاضیمافیا
5وکیلناتاشاشهروندگادفادرمافیابمبراسنایپردکترقاضیکارآگاه
6مافیاناتاشااسنایپردکتربمبروکیلقاضیشهروندگادفادرکارآگاه
7مافیااسنایپربمبروکیلکارآگاهقاضیناتاشاگادفادرشهرونددکتر
8قاضیاسنایپرمافیابمبرکارآگاهدکترناتاشاوکیلشهروندگادفادر
9دکترمافیابمبروکیلقاضیشهروندگادفادراسنایپرناتاشاکارآگاه
10کارآگاهبمبردکتراسنایپرگادفادرناتاشاشهروندقاضیمافیاوکیل

عوض شدن نقش بین بازی‌های نمونه

برای هر بازیکن: چند بار نقشش بین بازی n و n+1 ثابت ماند یا عوض شد (۹ انتقال).

بازیکنهمان نقشعوض شدنرخ تغییر
علی1888.9%
سارا2777.8%
رضا09100%
مریم1888.9%
حسین2777.8%
نیما2777.8%
زهرا2777.8%
امیر2777.8%
نازنین3666.7%
پارسا2777.8%

با ۱۰ نقش یکتا، شانس نگه داشتن همان نقش در بازی بعد ≈ ۱۰٪ است؛ پس نرخ تغییر باید نزدیک ~۹۰٪ باشد.

مونت‌کارلو — ۱۰٬۰۰۰ پخش (نقش‌های یکتا)

انتظار هر سلول: ۱۰۰۰ بار (۱۰٪ پخش‌ها).

درصد فراوانی نقش برای هر بازیکن

بازیکنگادفادرمافیادکترکارآگاهاسنایپرناتاشاوکیلشهروندقاضیبمبر
علی9.6%10.2%10%9.9%10.1%10.2%10%9.4%10.8%9.9%
سارا10.5%9.5%9.8%9.4%10.4%9.7%9.9%9.8%10.4%10.6%
رضا10.4%9.6%9.8%10%10.1%9.5%10.2%10.1%10.1%10.1%
مریم9.7%10%10.3%10%10.1%10%9.8%10.4%9.8%10%
حسین9.8%9.8%10.2%10.2%10.1%10.2%10%10.1%9.9%9.8%
نیما10.1%10.2%9.8%10.5%10.5%10%9.8%9.6%9.6%9.8%
زهرا9.7%10.4%10.4%9.9%9.7%9.5%10.2%10.1%10%10.3%
امیر10%10.3%9.8%10%9.7%10.4%10.4%9.9%9.4%10.2%
نازنین10%10.2%10.3%10.2%10%10.1%9.4%9.8%10.2%9.8%
پارسا10.2%9.8%9.6%9.7%9.4%10.5%10.4%10.9%9.8%9.6%

شمارش خام (بازیکن × نقش) و χ²

بازیکنگادفادرمافیادکترکارآگاهاسنایپرناتاشاوکیلشهروندقاضیبمبرχ²
علی9641015997990100910161001939107899111.9
سارا105295398193910429739899771035105916.8
رضا10419649821004100794910191012101010126.7
مریم967100410281000101099797610369859974.1
حسین9769811016102210061015100210129949762.7
نیما101010249801054105199997696296498010.3
زهرا9671035104599396694710151006100010269.3
امیر1001102797810039681039103899194010159.1
نازنین1000102010301024996101294597810169796.2
پارسا102297796397194510531039108797896519.9

χ² هر بازیکن (۹ درجه آزادی) معمولاً زیر ~۱۶–۲۱ برای تخصیص عادلانه در این حجم نمونه می‌ماند. مجموع χ² بازیکن‌ها ≈ ۹۷.

چسبندگی نقش نسبت به بازی قبل

تعداد انتقال‌ها: ۹۹۹۹. انتظار عادلانه ≈ ۱۰٪ همان نقش / ۹۰٪ تغییر.

بازیکنهمان نقش قبلینرخ هماننرخ تغییر
علی9349.3%90.7%
سارا9889.9%90.1%
رضا104610.5%89.5%
مریم101910.2%89.8%
حسین100910.1%89.9%
نیما9449.4%90.6%
زهرا103110.3%89.7%
امیر105910.6%89.4%
نازنین9899.9%90.1%
پارسا100310%90%
معیارمقدار
پخش‌های یکتای کل میز۹۹۸۳ / ۱۰۰۰۰
اثرانگشت‌هایی که بیش از یک‌بار دیده شدند۱۷

با ۱۰! = ۳٬۶۲۸٬۸۰۰ جایگشت ممکن و فقط ۱۰٬۰۰۰ نمونه، تقریباً هر پخش باید یکتا باشد.

Setup B — ترکیب واقعی (۵ شهروند)

تعداد: گادفادر×۱، مافیا×۱، دکتر×۱، کارآگاه×۱، اسنایپر×۱، شهروند×۵.

سهم انتظار نقش یکتا: ۱۰٪. سهم انتظار شهروند: ۵۰٪.

مونت‌کارلو — ۱۰٬۰۰۰ پخش

بازیکنگادفادرمافیادکترکارآگاهاسنایپرشهروند
علی9.6%10%9.4%10.2%9.9%50.9%
سارا10.5%10.5%9.6%9.8%9.5%50%
رضا9.7%10.3%10.4%9.8%10.1%49.7%
مریم9.9%10.3%9.8%10.3%10.2%49.6%
حسین10.3%9.9%10.2%10%10.2%49.4%
نیما9.8%9.9%10.3%10.2%9.4%50.4%
زهرا10.8%9.9%9.9%9.8%9.9%49.7%
امیر10%9.7%10.3%10%9.8%50.2%
نازنین9.6%9.6%10.1%9.7%10.6%50.5%
پارسا9.7%10%10%10.2%10.5%49.6%

چسبندگی همان نقش (شامل شهروند)

چون شهروند ۵ کپی دارد، شانس نگه داشتن همان شناسه نقش بالاتر است (≈ ۳۰٪ در تخصیص عادلانه مستقل).

بازیکنهمان نقش قبلینرخ هماننرخ تغییر
علی307330.7%69.3%
سارا302130.2%69.8%
رضا301830.2%69.8%
مریم289529%71%
حسین297629.8%70.2%
نیما301930.2%69.8%
زهرا294629.5%70.5%
امیر302630.3%69.7%
نازنین301430.1%69.9%
پارسا301830.2%69.8%

Setup C — آیا تازه‌وارد بیشتر مافیا می‌شود؟

شایعه: «هر بار کسی تازه به لیست اضافه می‌شود، شانس مافیا شدنش بیشتر است.»

در اپ، بازیکن جدید به انتهای لیست اضافه می‌شود. آزمایش‌ها همیشه تازه‌وارد را آخر می‌گذارند و همان RoleDealer + RoleCountAllocator واقعی را صدا می‌زنند.

نقش‌های مافیا در قالب: گادفادر و مافیا (side=2). شانس انتظار = صندلی مافیا / تعداد بازیکن.

C1 — میز ثابت: ۹ قدیمی + ۱ تازه‌وارد × ۵۰۰ پخش

معیارمقدار
بازیکن۱۰
صندلی مافیا در هر پخش۲
P(mafia) انتظار۲۰٪
ضربات مافیای تازه‌وارد۸۹ / ۵۰۰
نرخ مافیای تازه‌وارد۱۷٫۸٪
میانگین مافیای قدیمی‌ها۲۰٫۲٪
تازه‌وارد − انتظار−۲٫۲ نقطه درصد
تازه‌وارد − قدیمی‌ها−۲٫۴ نقطه درصد

نرخ مافیا بر اساس جایگاه در لیست

ایندکس لیستضربات مافیانرخ
010420.8%
111022%
29719.4%
311823.6%
49218.4%
59418.8%
69318.6%
711623.2%
88717.4%
9 (تازه‌وارد)8917.8%

اگر شایعه درست بود، ردیف آخر باید واضح بالاتر از ~۲۰٪ می‌نشست. در تخصیص عادلانه نزدیک همان خط می‌ماند.

C2 — رشد لیست: اضافه کن، پخش کن، تکرار (۵۰۰ پخش)

شروع با ۵ نفر؛ هر بازی پخش می‌شود، بعد یک بازیکن جدید اضافه می‌شود. در ۱۵ نفر به ۵ برمی‌گردد. تعداد نقش‌ها با RoleCountAllocator برای همان اندازه است.

معیارمقدار
تعداد پخش۵۰۰
ضربات مافیای تازه‌ترین نفر۱۱۸
نرخ مافیای تازه‌ترین۲۳٫۶٪
انتظار (وزن‌دار با اندازه میز)۲۲٫۵٪
تازه‌ترین − انتظار+۱٫۱ نقطه درصد
میانگین مافیای قدیمی‌ترها۱۹٫۷٪
اندازه میزپخش‌هانرخ مافیای تازه‌ترینانتظار
54643.5%40%
64637%33.3%
74632.6%28.6%
84626.1%25%
94617.4%22.2%
104515.6%20%
114526.7%18.2%
124515.6%16.7%
134517.8%15.4%
144513.3%14.3%
154513.3%13.3%

نتیجه Setup C: بازیکن تازه‌اضافه‌شده به‌صورت سامانمند به مافیا هل داده نمی‌شود. فاصله‌های کوچک از خط انتظار، نویز دوجمله‌ای طبیعی است.

نتیجه‌گیری

  • هر بازی مستقل با RoleDealer دوباره بر می‌خورد؛ هیچ بازیکنی ویژه نیست.
  • در ۱۰٬۰۰۰ پخش، هر نقش یکتا نزدیک ~۱۰٪ برای هر بازیکن می‌نشیند.
  • بین بازی‌های پشت‌سرهم، نقش یکتا تقریباً همیشه عوض می‌شود (~۹۰٪).
  • تکرار کامل چیدمان میز در این حجم نمونه بسیار نادر است.
  • تازه‌واردها بیشتر مافیا نمی‌شوند — نرخشان با خط منصفانه هم‌خوان است (Setup C، ۵۰۰ آزمایش).