استفاده از اعداد تصادفی در متلب
هنگامی که یک نرم افزار را می نویسیم تا با داده ها کار کند ولی هنوز داده های ما در دسترس نیستند، این بسیار کارآمد است که نرم افزار خود را با استفاده از اعداد تصادفی مورد تست و آزمایش قرار دهیم. اعداد تصادفی را همچنین می توان در شبیه سازی ها مورد استفاده قرار داد. در متلب، چندین تابع داخلی وجود دارند که اعداد تصادفی را ایجاد می کنند و در این بخش، تعدادی از آنها را مورد تجزیه و تحلیل قرار خواهیم داد.
توابع تولید کننده ی اعداد تصادفی، در حقیقت، تصادفی نیستند. در اصل کارکرد آنها به این صورت است که ابتدا پروسه با یک عدد شروع می شود که به آن 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 برای تولید اعداد حقیقی تصادفی با توزیع نرمال استفاده می شود.
- نوشته شده توسط احسان عباسی
- بازدید: 14764
دیدگاهها
چطور می توانم با استفاده از تابع RNG اگر بخواهیم یک رشته از اعداد تصادفی صحیح بین ۱ تا ۵۰ (شامل خود ۱و۵۰ هم باشد) ایجاد کنیم که تعداد سطرهای آن 1 است و تعداد ستون های آن ۷ است. و به صورت تساعدی بالا میروند و تکراری هم نباشند باید چه طور بنویسیم؟ a, b, c, d, e, f, g a < b
خیلی مطالب و آموزشهاتون را در وبسایت بیاموز دنبال می کنم. ممنون از این همه اطلاعات خوبی که در اختیار ما میگذارید. من یک سوال در ارتباط با نرم افزار متلب دارم از خدمتتون. چطور می توانم با استفاده از تابع RNG
اگر بخواهیم یک رشته از اعداد تصادفی صحیح بین ۱ تا ۵۰ (شامل خود ۱و۵۰ هم باشد) ایجاد کنیم که تعداد سطرهای آن 1 است و تعداد ستون های آن ۷ است. و به صورت تساعدی بالا میروند و تکراری هم نباشند باید چه طور بنویسیم؟
a, b, c, d, e, f, g
a < b
سلام ممنون از راهنمایی تون میشه دستورrandnروبگی د برای بردارتصادفی شامل هزارعددازیک تاشش
سلام. می خواهید بین بازه ی 1 تا 6 اعداد تصادفی صحیح داشته باشید یا اعداد اعشاری.
پاسخ شما در لینک زیر داده شده است:
www.beyamooz.com/matlab-for-dummies/543-matlab-tutorials-chapter5/4415-%D9%88%D8%A7%D8%B1%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%85%D8%AA%D9%84%D8%A8
با سلام
برای تولید اعداد تصادفی باینری در متلب چه باید کرد؟
سلام اگه مقاله ی بعدی رو مطالعه کنید. متوجه خواهید شد. از دستور زیر استفاده کنید:
randi([0,1])
اگه می خواهید یک رشته از اعداد تصادفی باینری ایجاد کنید می توانید از دستور زیر استفاده کنید:
x = randi([0 1],1,5)
این دستور یک دنباله از اعداد تصادفی باینری ایجاد می کند که تعداد سطرهای آن 1 است و تعداد ستون های آن 5 است.