سبد (0)

استفاده از اعداد تصادفی در متلب

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

توابع تولید کننده ی اعداد تصادفی، در حقیقت، تصادفی نیستند. در اصل کارکرد آنها به این صورت است که ابتدا پروسه با یک عدد شروع می شود که به آن seed گفته می شود. غالباً این seed اولیه، یک مقدار از پیش تعیین شده است یا با استفاده از ساعت داخلی کامپیوتر به دست آمده است. سپس بر اساس این seed، طی یک فرآیند، عدد تصادفی بعدی به دست می آید. حالا اگر از عدد تصادفی قبلی بعنوان seed استفاده شود، یک عدد تصادفی دیگر به وجود می آید و همین طور الی آخر. 

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

 از تابع rand برای تولید اعداد حقیقی تصادفی با توزیع یکنواخت استفاده می شود. با فراخوانی این تابع، یک عدد حقیقی تصادفی در بازه ی باز (0,1) تولید می شود. منظور از بازه ی باز این است که اعداد شروع و پایان بازه ی مورد نظر، خود شامل نمی شوند. در ساده ترین حالت استفاده از تابع rand نیازی به اضافه کردن هیچ آرگومانی نیست. در زیر، دو مثال از تابع rand وجود دارند، به آنها توجه کنید:

 هر زمان که متلب شروع به کار می کند، مقدار seed برای تابع rand یکسان است اما مقدار seed اولیه تغییر می کند. تابع rng، درواقع seed اولیه را تعیین می کند. این تابع را به روش های مختلفی همچون زیر می توان فراخوانی نمود:

اگر از مقدار 'shuffle' استفاده کنیم، تابع rng برای تعیین کردن seed، از تاریخ و زمان جاری ساعت داخلی استفاده می کند. بنابراین مقدار seed همواره متفاوت خواهد بود. همچنین می توان برای seed از یک عدد صحیح استفاده نمود. اگر از مقدار 'default' برای تابع rng استفاده کنیم، از همان مقدار پیش فرض seed به هنگام اجرای نرم افزار متلب استفاده می شود. تابع rng همچنین می تواند بدون آرگومان مورد استفاده قرار گیرد. در این صورت، از وضعیت فعلی تولید کننده ی اعداد تصادفی (rng)استفاده می شود:

 

 هنگامی که نرم افزار متلب شروه به کار می کند، تولید کننده ی اعداد تصادفی(rng) مقدار دهی اولیه می شود. که به این مقدار دهی اولیه، فرآیند سراسری(global stream) اعداد تصادفی گفته می شود. در این فرآیند، تمامی توابع تصادفی مقداردهی می شوند.

چون که تابع rand یک مقدار حقیقی را در بازه ی (0,1) ایجاد می کند، اگر حاصل آن را در یک عدد صحیح N ضرب کنیم، یک عدد حقیقی تصادفی در بازه ی \((0,N)\) برگردانده خواهد شد. بعنوان مثال، اگر حاصل تابع rand را در عدد 10 ضرب کنیم، یک عدد حقیقی در بازه ی باز (0,10) برگردانده خواهد شد. بعبارت دیگر، اگر عبارت 10*rand را در متلب وارد کنید، آنچه حاصل می شود، بین بازه ی باز (0,10) خواهد بود. 

 برای تولید یک عدد حقیقی تصادفی، به طوری که بین متغیرهای high و low باشد، ابتدا متغیرهایی به نام low و high ایجاد کنید. سپس از فرمول \(rand*(high-low)+low\) استفاده کنید. بعنوان مثال دستورات زیر، یک عدد حقیقی تصادفی را در بازه ی باز (3,5) ایجاد خواهند نمود:

همچنین از تابع randn برای تولید اعداد حقیقی تصادفی با توزیع نرمال استفاده می شود.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه