مسیرها
/
C#
C#
/
تمرین‌ها
/
تولدهای گیج‌کننده
تولدهای گیج‌کننده

تولدهای گیج‌کننده

متوسط

مقدمه

تازه از دانشگاه فارغ‌التحصیل شده‌اید و مهمانی بزرگی به راه انداخته‌اید تا با دوستان و خانواده جشن بگیرید. بیش از ۷۰ نفر آمده‌اند، از جمله عمو Ted که تا حدودی عجیب‌وغریب است.

در یکی از شیطنت‌های همیشگی‌اش، با شما ۱۰۰ پوند شرط می‌بندد که دست‌کم دو نفر در این اتاق تولدشان یکی است. این حرف مسخره به نظر می‌رسد، چون تعداد تولدهای ممکن بسیار بیشتر از تعداد مهمان‌هاست. پس با اطمینان شرط را می‌پذیرید.

در کمال حیرتتان، پس از جمع‌آوری تولد فقط ۳۲ مهمان، همین حالا دو مهمان پیدا کرده‌اید که تولدشان یکی است. شکست را می‌پذیرید و ۱۰۰ پوند را به عمو Ted می‌دهید، اما چیزی درست به نظر نمی‌رسد.

روز بعد، کنجکاوی بر شما غلبه می‌کند. یک جست‌وجوی سریع در وب شما را به «پارادوکس تولد» می‌رساند؛ این پارادوکس نشان می‌دهد که با تنها ۲۳ نفر، احتمال اینکه دو نفر تولد مشترک داشته باشند از ۵۰٪ بیشتر می‌شود.

آهان. پس برای همین بود که عمو Ted این‌قدر مطمئن بود.

مصمم هستید که ورق را برگردانید، پس شروع می‌کنید به جست‌وجو درباره‌ی پارادوکس‌های دیگر؛ دفعه‌ی بعد شما کسی خواهید بود که شرط می‌بندد.

Note

پارادوکس تولد یک «پارادوکس صادق» است: با اینکه نادرست به نظر می‌رسد، در واقع درست است.

دستورالعمل‌ها

وظیفه‌ی شما برآورد احتمال‌های پارادوکس تولد است.

برای این کار باید:

  • تاریخ‌های تولد تصادفی تولید کنید.
  • بررسی کنید که آیا در مجموعه‌ای از تاریخ‌های تولد تصادفی، دست‌کم دو مورد با روز تولد یکسان وجود دارد یا نه.
  • برای اندازه‌های مختلف گروه، احتمال این را برآورد کنید که دست‌کم دو نفر در یک گروه روز تولد یکسان داشته باشند.
Note

«تاریخ تولد» شامل تاریخ کامل تولد است (سال، ماه و روز)، در حالی که «روز تولد» فقط به ماه و روز اشاره دارد که هر سال تکرار می‌شوند. دو تاریخ تولد با ماه و روز یکسان، به یک روز تولد مربوط می‌شوند.

Caution

«پارادوکس تولد» این فرض‌ها را در نظر می‌گیرد:

  • ۳۶۵ روز تولد ممکن وجود دارد (بدون سال‌های کبیسه).
  • هر روز تولد به یک اندازه محتمل است (توزیع یکنواخت).

پیاده‌سازی شما باید این فرض‌ها را رعایت کند.


منبع

Erik Schierboomاین لینک در پنجره یا تب جدیدی باز می‌شود.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
C# Exercism

آماده‌اید تولدهای گیج‌کننده را شروع کنید؟

در Exercism ثبت‌نام کنید تا C# را همراه با 62 مفهوم178 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.