شما اینجا هستید

۰.۴ توزیع نرمال از اعداد تصادفی

پیغام خطا

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls در book_prev() (خط 775 در /home/molavy/public_html/modules/book/book.module).

اجازه بدهید به شبیه سازی جمعیت میمون ها برگردیم. برنامه شماهزاران شی میمون تولید می کند که هر کدام دارای قدی بین ۲۰۰ تا ۳۰۰ هستند(و این یک دنیا از میمون ها با ارتفاعی بین ۲۰۰ تا ۳۰۰ پیکسل است.)

 float h = random(200,300);

آیا این نمایش دقیقی از ارتفاع ها در دنیای واقعی است؟

اجازه بدهید یک پیاده رو شلوغ در خیابان را در نظر بگیریم. هر فردی که در خیابان انتخاب کنیم به نظر دارای یک بلندی قد تصادفی است. اما اصلا شبیه آنچه تصادفی بودنی که تابع random برای ما فراهم می کند نیست. قد افراد به صورت یک نواخت توزیع نشده است. بسیاری افراد قد متوسطی دارند تعداد کمی قد کوتاه و تعداد کمی نیز قد بلند هستند. برای شبیه سازی دنیای واقعی، ما میخواهیم که بیشتر میمون های ما ارتفاعی در حدود ۲۵۰ پیکسل داشته باشد، اما به صورت تصادفی خیلی کوتاه و خیلی بلند نیز داشته باشیم.

یک توزیع از مقادیر که در مقدار متوسط آن(میانگین آن) دارای جمعیت بیشتری باشند به عنوان توزیع نرمال(طبیعی) شناخته می شود. همچنین به آن توزیع گاوس (به خاطر ریاضیدان کارل فریدریچ گاوس) شناخته میشود.

وقتی شما گرافی از توزیع رسم می کنید، شما چیزی شبیه زیر (که به منحنی زنگوله ای نیز خوانده می شود) خواهید داشت:

 

 

منحنی با توابع ریاضی که احتمال یک مقدار را با توجه به چند تابع بر می گردانند ساخته شده است. این توابع از میانگین(اغلب به حرف μ یک حرف یونانی با تلفظ مو) و انحراف معیار (σ, حرف یونانی با تلفظ سیگمایا زیگما) استفاده می کنند.

میانگین که خیلی ساده است. در این مثال ارتفاع بین ۲۰۰ تا ۳۰۰، ما با یک نظر میانگین(مقدار متوسط) آن را متوجه می شویم یعنی ۲۵۰ . حال اگر بگوییم انحراف معیار ما ۳ یا ۱۵ است یعنی چه؟ این اعداد چه معنایی می دهند؟ گراف های بالا ما را راهنمایی می کنند.گراف اول دارای توضیعی با انحراف معیار کم است. برای همین اغلب مقادیر به سمت میانگین متمایل و متمرکز شده اند. گراف دوم دارای انحراف معیار بالاتری است، برای همین مقادیر بیشتر پراکنده هستند. اعداد به شکل زیر قرار دارند می کنند:

با توجه به جمعیت، ۶۸٪ اعضای جمعیت مقادیری در یک انحراف معیار از میانگین قرار دارند، ۹۸٪ درصد در انحراف معیار دو انحراف معیار از مرکز قرار دارند و ۹۹۷٪ در سه انحراف معیار از مرکز قرار دارند. این موضوع در تصویر زیر نمایش داده شده است.

اگر برای هر انحراف معیار ۵ پیکسل را در نظر بگیریم.تنها ۰.۳٪ از میمون ها قدی کمتر از ۲۳۵ پیکسل یا بالاتر از 265 دارند. سه انحراف معیار بالاتر از میانگین ۲۵۰).

محاسبه میانگین و انحراف معیار

یک کلاس با ۱۰ دانش آموز که نمراتی به شرح زیر (از ۱۰۰ نمره) را در امتحان گرفته اند را در نظر بگیرید:

85، 82، 88، 86، 85، 93، 98، 40، 73، 83

میانگین آن برابر است : 81٫3

انحراف معیار از ریشه مجذور میانگین از مربع های انحراف از میانگین است. یعنی تفاوت مقدار بین هر فرد و میانگین را محاسبه و آن را مربع می کنیم(واریانس یا پراکندگی)

میانگین تمام مقادیر به دست آمده را محاسبه می کنیم و ریشه مجذور را محاسبه می کنیم.مقدار به دست آمده عنوان انحراف معیار است.

 

امتیاز

فاصله از میانگین

واریانس

85

85-81.3 = 3.7

(3.7)2 = 13.69

40

40-81.3 = -41.3

(-41.3)2 = 1705.69

etc.

   

254.23

میانگین واریانس:

 

 

انحراف معیار جذر میانگین واریانس است: 15.13

خوشبختانه، ما برای استفاده از از توزیع نرمال از مقادیر تصادفی برای ترسیم در processing، مانیازی نیست که تمام محاسبات را خودمان انجام دهیم.به جای آن ما می توانیم از تابع Random استفاده کنیم. این تابع از کتابخانه پیشفرض جاوا است که به processing آمده است (برای اطلاعات بیشتر مستندات جاوا را ببینید).

برای استفاد ه از کلاس ‌Random، ما باید یک متغییر تعریف کنیم که از نوع Random باشد و در setup یک شی Random بسازیم.

 Random generator;
 
void setup() {
  size(640,360);
  generator = new Random();
}
اگر ما بخواهیم که مقادیر تصادفی با توزیع نرمال(یا گاوس) در هر بار اجرای draw داشته باشیم تنها کافی است یک متد nextGaussian را فراخوانی کنیم.
 void draw() {
  float num = (float) generator.nextGaussian();
}

همه چیز فراهم است. با این مقادیر چه کار می خواهیم انجام دهیم؟ چگونه می توانیم از آنها استفاده کنیم، برای مثال برای مقدار دهی به یک موقعیت x از یک شی برای ترسیم در صفحه؟

تابع nextGaussian مقادیر تصادفی در توزیع نرمال را با پارامتر های زیر بر می گرداند: میانگین و انحراف معیار، بیایید بگوییم که می خواهیم میانگین مان ۳۲۰(وسط صفحه افقی با طول ۶۴۰) و انحراف معیار ما ۶۰ پیکسل باشد. ما می توانیم پارامتر ها را با ضرب ان توسط انحراف معیار و افزودن به میانگین تنظیم کنیم.

 

Your browser does not support the canvas tag.

 void draw() {
  float num = (float) generator.nextGaussian();
  float sd = 60;
  float mean = 320;
 
  float x = sd * num + mean;
 
  noStroke();
  fill(255,10);
  ellipse(x,180,16,16);
} 

با ترسیم بیضی ها در روی یکدیگر با مقداری شفافیت، ما می توانیم توضیع را ببینیم.
پر رنگ ترین نقطه روی میانگین است، جایی که بیشترین جمعیت قرار دارند و بیشتر دایره ها در اطراف مرکز ترسیم می شوند.
تمرین ۰.۴
یک شبیه سازی برای رسم یک مجموعه دایره روی یک صفحه دو بعدی را در نظر بگیرید. اغلب دایره ها در حول مرکز ترسیم می شوند، اما بعضی از نقطه ها در اطراف رسم می شوند.می توانید از یک توزیع نرمال از مقادیر تصادفی برای تولید موقعیت نقطه ها روی صفحه استفاده کنید؟ آیا می توانید از توزیع نرمال به مقادیر تصادفی برای تولید رنگ نقاط استفاده کنید؟
تمرین ۰.۵
گردشگر تصادفی گاوسی در یک قدم با یک توزیع نرمال تعریف شده است( چقدر شی در چه مسیری حرکت کند. این واریانس را در حرکت تصادفی تعریف کنید.

دیدگاه‌ها

سلام بادستورrandnچطورمیشه یه بردارشامل۱۰عددتصادفی بین۲تا۳ایجادکرد؟

دستور randn برای زبان processing هستش؟ شک دارم... تو مطلب و تو پایتون تو کتابخانه numpy دیدم بیشتر این تابع رو

دیدگاه جدیدی بگذارید