مشكلة عيد الميلاد (مفارقة عيد الميلاد) بتحاول تلاقي احتمال إن في مجموعة من ن شخص، يكون فيه اتنين أو أكتر عندهم نفس يوم الميلاد. للتبسيط، بنتجاهل وجود السنة الكبيسة، والحقيقة إن المواليد بتكون موسمية.
ليكس فريدمان نشر مرة تغريدة:
@lexfridman: في أوضة فيها 23 شخص، فيه احتمال 50% إن اتنين يكون عندهم نفس يوم الميلاد.
حاولت أحسبها باستخدام الاحتمالات، بس دماغي عادةً بتلاقي صعوبة في كده. طبعاً، ممكن أشوف صفحة ويكيبيديا وانسخ الحسابات منها، بس أنا بفضل استخدم الأداة المفضلة عندي بدلاً من كده، وهي طرق مونت كارلو القوية.
يعني خليها على الرياضيات! خليها على الاحتمالات! عندنا معالجات رخيصة تعمل الحاجات دي بدلاً مننا. أنا في الأساس عملت محاكاة للمشكلة وحسبت الاحتمالات بنفسي.
بناخد 23 شخص، ونعطي كل واحد فيهم يوم ميلاد عشوائي، ونشوف لو اتنين أو أكتر عندهم نفس يوم الميلاد. ولأن عندنا الكمبيوترات تحت إيدينا، نقدر نكرر العملية دي مليون مرة، مين يهمه!
خدني كام دقيقة عشان أثبت تغريدة Fridman، وبالظبط كده، في أوضة فيها 23 شخص، فيه احتمال 50.7% إن اتنين يكون عندهم نفس يوم الميلاد.
ده الكود:
1 import numpy as np
2 import pandas as pd
3
4 collisions = []
5
6 for i in range(1_000_000):
7 birthdays = np.random.choice(range(1, 366), 23)
8 collision = len(birthdays) > len(set(birthdays))
9 collisions.append(collision)
10
11 print(
12 '% of collisions: {:.1%}'.format(
13 pd.Series(collisions).mean()
14 )
15 )
تقدر تعمله parallel؟
طارق عمرو - 3 مارس 2021