آمار و احتمال پایه برای برنامه نویسی | مفاهیم پایه‌ای احتمال

تعریف احتمال و فضای نمونه

احتمال، علم اندازه‌گیری شانس وقوع یک رویداد است. در دنیای برنامه‌نویسی، از احتمال برای مدل‌سازی رفتارهای غیرقطعی، ساخت بازی‌ها، طراحی الگوریتم‌های هوشمند و تحلیل داده‌ها استفاده می‌شود.

فضای نمونه (Sample Space):
به مجموعه تمام نتایج ممکن یک آزمایش تصادفی، فضای نمونه می‌گوییم و آن را معمولاً با حرف S نشان می‌دهیم. هر عضو این مجموعه یک نتیجه مقدماتی است.

  • مثال ۱ (پرتاب سکه): آزمایش: پرتاب یک سکه عادلانه.
    • فضای نمونه: S = {رو، پشت} یا S = {H, T}.
  • مثال ۲ (پرتاب تاس): آزمایش: پرتاب یک تاس استاندارد شش‌وجهی.
    • فضای نمونه: S = {1, 2, 3, 4, 5, 6}.
  • مثال ۳ (پرتاب دو سکه): آزمایش: پرتاب همزمان دو سکه.
    • فضای نمونه: S = {(رو,رو), (رو,پشت), (پشت,رو), (پشت,پشت)}.

رویداد (Event):
هر زیرمجموعه از فضای نمونه را یک رویداد می‌نامیم. یک رویداد می‌تواند شامل یک یا چند نتیجه مقدماتی باشد.

  • در مثال پرتاب تاس، رویداد "آمدن عدد زوج" برابر است با E = {2, 4, 6} که یک زیرمجموعه از S است.

تعریف کلاسیک احتمال (برای فضای نمونه‌های گسسته و هم‌شانس):
اگر فضای نمونه S دارای n نتیجه مقدماتی هم‌شانس باشد، احتمال وقوع هر رویداد A از رابطه زیر به دست می‌آید:
P(A) = (تعداد نتایج مطلوب برای رویداد A) / (تعداد کل نتایج ممکن در فضای نمونه S)
یا به طور خلاصه: P(A) = |A| / |S|

مثال محاسبه:
در پرتاب تاس، احتمال رویداد A (آمدن عدد زوج) چقدر است؟

  • فضای نمونه: S = {1, 2, 3, 4, 5, 6}|S| = 6
  • رویداد مطلوب: A = {2, 4, 6}|A| = 3
  • احتمال: P(A) = 3 / 6 = 0.5 یا 50%

نمایش در کد (پایتون):
بیایید این مفاهیم را با یک برنامه ساده برای پرتاب تاس شبیه‌سازی کنیم.

import random

# تعریف فضای نمونه برای پرتاب تاس
sample_space = [1, 2, 3, 4, 5, 6]

# تعریف رویداد "عدد زوج"
event_even = {2, 4, 6}

# شبیه‌سازی یک پرتاب
single_roll = random.choice(sample_space)
print(f"نتیجه یک پرتاب تاس: {single_roll}")

# بررسی عضویت در رویداد
if single_roll in event_even:
    print("رویداد 'عدد زوج' رخ داد.")
else:
    print("رویداد 'عدد زوج' رخ نداد.")

# محاسبه احتمال نظری
prob_theoretical = len(event_even) / len(sample_space)
print(f"\nاحتمال نظری آمدن عدد زوج: {prob_theoretical:.2f} یا {prob_theoretical*100:.0f}%")

# تخمین احتمال با شبیه‌سازی (روش مونت کارلو)
num_simulations = 10000
count_even = 0

for _ in range(num_simulations):
    roll = random.choice(sample_space)
    if roll in event_even:
        count_even += 1

prob_simulated = count_even / num_simulations
print(f"احتمال تخمین‌زده‌شده با {num_simulations} شبیه‌سازی: {prob_simulated:.4f}")

خروجی نمونه برنامه:

نتیجه یک پرتاب تاس: 4
رویداد 'عدد زوج' رخ داد.

احتمال نظری آمدن عدد زوج: 0.50 یا 50%
احتمال تخمین‌زده‌شده با 10000 شبیه‌سازی: 0.5023

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

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3
  • 4