اگر سکه‌ای را یک بار پرتاب کنید دو حالت به وجود می‌آید. یا به پشت بر زمین می‌افتد یا به رو بر زمین می‌افتد. گفته می‌شود که احتمال پشت آمدن یا رو آمدن سکه 50 درصد است.

اما آیا این به این معناست که اگر سکه را برای 10 بار به زمین پرتاب کنید باید 5 بار رو بیاید و 5 بار پشت بیاید؟

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

اما اگر بازی پرتاب سکه را به دفعات زیادی تکرار کنید می‌توانید ببینید که در مجموع تعداد پشت آمدن‌ها یا رو آمدن‌ها نسبت به تعداد کل بازی‌ها به مقدار مورد انتظار که 50 درصد است نزدیک می‌شود.

یعنی شاید اگر 1000 بار پرتاب سکه را انجام بدید، حدودا نیمی از پرتاب‌ها به پشت یا به رو است.

تعداد دفعات زیاد حرف مبهمی است. یعنی ما نمی‌دونیم چقدر زیاد ولی اگر تعداد بازی‌ها به اندازه کافی زیاد باشد، حدودا و نه دقیقا در نیمی از پرتا‌ب‌ها سکه به پشت می‌افتد. چون فرض کنید که 10000 بار سکه‌ای را پرتاب می‌کنیم. عجیب خواهد بود که دقیقا 5000 بار سکه‌ها به پشت و 5000 بار سکه‌ها به رو بیفتند.

با این مقدمه در این مطلب درباره گام زدن تصادفی صحبت شده است. شخصی را در نظر بگیرید که می‌خواهد به صورت تصادفی 30 قدم بزند.

هر قدم می‌تواند به سمت شمال (بالا)، جنوب (پایین)، شرق (راست) و غرب (چپ) باشد. شخص در هر قدم به طور تصادفی یکی از چهار جهت را انتخاب می‌کند و حرکت می‌کند. احتمال انتخاب هر کدام از جهت‌ها یک چهارم یا 25 درصد است.

پس از 30 قدم شخص به نقطه‌ای می‌رسد که می‌خواهیم فاصله‌ی آن را با نقطه‌ی شروع حرکت محاسبه کنیم.

فاصله‌ی شخص تا نقطه‌ی شروع هر عددی می‌تواند باشد.

برای مثال در تصویر پایین نقطه‌ی شروع نقطه‌ S و نقطه‌ی پایان نقطه F است و در نهایت شخص از نقطه شروع 10 قدم فاصله خواهد داشت.

Random_Walk

از لحاظ تئوری این امکان وجود دارد که شخص از نقطه‌ی شروع 30 قدم هم فاصله داشته باشد. مثلا هر 30 قدم به سمت بالا باشد. اما در عمل اگر این شبیه‌سازی را حتی برای 1000 بار هم اجرا کنید چنین چیزی اتفاق نمی‌افتد و باید خیلی خوش شانس باشید که چنین چیزی رو ببینید. احتمال دیدن آن بسیار پایین است ولی محال نیست.

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

برای مثال فرض کنید برای 30 بار این قدم زدن را انجام می‌دهیم و متوسط فاصله‌ی نهایی از نقطه شروع را محاسبه می‌کنیم.

در گیف زیر می‌تونید چنین محاسبه‌ای رو ببینید. می‌بینید که اگر 3 بار هم این کار را انجام دهیم متوسط فاصله از مبدا در حدود 5 است.

random_walk

اگر چه که فاصله از مبدا در هر بار اندازه‌های متفاوتی می‌تواند داشته باشد اما اگر این کار به تعداد دفعات زیادی انجام شود میانگین فاصله از مبدا به یک مقدار ثابت نزدیک می‌شود.

پس اگر در یک کازینوی شرط بندی احتمال بردن یک بازی 30 درصد و باختن یک بازی 70 درصد باشد ممکن است در یک شب یا دو شب یا خیلی از شب‌ها مشتری‌های کازینو برنده باشند اما در نهایت در طولانی مدت این کازینو است که برنده نهایی است. به این علت که اگر بازی به تعداد دفعات زیادی انجام شود میزان برنده و بازنده شدن به مقدارهای مورد انتظار نزدیک می‌شود. یعنی 70 بار کازینو برنده می‌شود و 30 بار افراد.

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

اگر بازی بالا را برای 1000 بار انجام دهیم می‌توانیم ببینیم که میانگین فاصله از مبدا در این بازی 5 است.

کد نوشتن مربوط به گشت زدن تصادفی ساده است.

Option Explicit
Public Sub random_walk()
Dim x, y, i, j As Integer
Dim step
For j = 1 To 1000
   x = 0
   y = 0
   For i = 1 To 30
        step = WorksheetFunction.RandBetween(1, 4)
        If step = 1 Then
            y = y + 1
        ElseIf step = 2 Then
            y = y - 1
        ElseIf step = 3 Then
            x = x + 1
        Else
            x = x - 1
        End If
   Next i
   Range("A1") = "Finish"
   Range("B1") = "x"
   Range("C1") = "y"
   Range("D1") = "distance"
   Range("A" & j + 1) = "F" & j
   Range("B" & j + 1) = x
   Range("C" & j + 1) = y
   Range("D" & j + 1).Value = Format(Sqr(Val(x) ^ 2 + Val(y) ^ 2), "00.0")
   Range("D" & j + 2) = Format(WorksheetFunction.Average(Range("D2:D" & j + 1)), "0.0")
Next j
    Range("D" & j + 1).Select
    Range("C" & j + 1) = "Mean"
End Sub

برای اجرا کردن کد، باید کد بالا را کپی کنید وارد اکسل شوید و سپس وارد محیط ویژوال بیسیک با استفاده از کلید Alt+F11 بشید و سپس با کلیک بر روی Run یا کلید F5 برنامه اجرا می‌‌شود.

در حلقه‌ی for داخلی می‌توان با تغییر متغیر i تعداد قدم‌‌ها را تغییر داد. در این حلقه یک عدد به طور تصادفی بین 1 تا 4 با تابع randbetween(1,4) انتخاب می‌شود. اگر 1 باشد حرکت به سمت بالا، اگر 2 باشد حرکت به سمت پایین، اگر 3 باشد حرکت به سمت راست و اگر 4 باشد حرکت به سمت چپ خواهد بود.

در حلقه‌ی for اول با تغییر متغیر j می‌توان تعداد انجام بازی‌ها را تغییر داد.

فاصله با استفاده از قانون فیثاغورس محاسبه شده است.

distance = (x2+y2)0.5

در vba تابع محاسبه ریشه دوم sqr است در حالی که در خود اکسل sqrt است.

اگر کد بالا را در VBA اجرا کنید میانگین فاصله‌ از مبدا پس از 1000 بازی در خانه‌ی C1002 محاسبه می‌شود.

میانگین فاصله در حدود 5 می‌‌شود. می‌توانید خودتان کد را اجرا کنید و نتیجه را ببینید.

می‌بینید با اینکه بازی یک بازی تصادفی است ولی میانگین فاصله از مبدا به یک نتیجه ثابت ختم می‌شود.

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

می‌شه دید که چنین نموداری به توزیع نرمال نزدیک است.

و اگر نمودار جعبه‌ای مختصات x و مختصات y را ایجاد کنیم می‌تونیم بزرگ‌ترین و کوچک‌ترین مقدار مختصات را ببینیم.

از نمودار بالا مشاهده می‌شود که 50 درصد نقاط پایانی در مختصات بین 2 تا 3 قرار گرفته‌اند.

نقاط خیلی کمی وجود دارند که مختصات پایانی آن‌ها بزرگ‌تر از 10 شده باشد که در شکل هم به صورت نقطه‌ای تکی نمایش داده شده‌اند که به معنای این هست که غیر معمول و نادر outlier هستند.

از لحاظ تئوری می‌توان نقاطی داشت که مختصات 30 هم داشته باشند ولی در1000 بازی حتی 1 نقطه هم وجود ندارد که مختصاتی بزرگ‌تر از 13 داشته باشد.

بحث گام زدن تصادفی به بحث شبیه‌سازی مرتبط است. در شبیه‌سازی مقدارهای ممکن یک متغیر را امتحان می‌کنیم تا نهایتا به نتایج ممکن دست پیدا کنیم.

برای مثال اگر با احتمال 40 درصد هزینه‌های این سال به ازای تولید هر قطعه 5 درصد افزایش پیدا کند، سود مورد انتظار چقدر خواهد بود؟

چنین سوالی را شاید بتوان با شبیه‌سازی جواب داد.

شاید بشه در تصمیم‌گیری‌ها نیز چنین برداشتی را داشت. اگر برای تصمیم‌های خودمان استراتژی و سیستم داشته باشیم قرار نیست که با هر تصمیم نتیجه خوبی هم بگیریم. اما در طولانی مدت تصمیم‌های درست به نتایج مورد انتظار نزدیک می‌شوند.

مرجعی برای بحث Random Walk