تولید اعداد تصادفی در متلب – دستور rand، randperm، randi و
در واقعیت انواع پارامترهایی که یک مدل را تعریف میکنند یک مقدار ثابت نداشته و هر کدام از آنها یک متغیر تصادفی میباشند که توزیع مشخصی دارند به این گونه مدلسازی مسائل، مدلسازی احتمالاتی میگویند. به عنوان مثال مقاومت فشاری چندین سیلندر بتنی که از یک نمونه بتن گرفته شدهاند یکسان نبوده و یک توزیع مشخص با میانگین و انحراف معیار معین دارد. در این مقاله بنا داریم تا با نحوه تولید اعداد تصادفی در متلب به طور کامل آشنا شویم.
در بسیاری از مسائلی که با آن سر و کار داریم نیاز به تولید اعداد تصادفی خواهیم داشت. اعدادی که رخداد آنها تصادفی باشد و وابستگی بین اعداد تولید شده وجود نداشته باشد.
اعداد تصادفی با توجه به شکل زیر در دو دسته بندی گسسته و پیوسته تولید میشوند. مثلا خسارت مالی یک شهر، مقاومت فشاری بتن، ارتفاع موج، شتاب زلزله و… متغیر تصادفی پیوسته میباشند و انتخاب نوع سیستم سازهای یک ساختمان، انواع حالت خرابی برای یک سازه ، شتاب زلزله در مقیاس مرکالی (ریشتر) و… متغیر تصادفی گسسته میباشند.
همچنین شما میتوانید سایر مقالات و « فیلم های آموزش متلب » را مشاهده نمایید و همین الان تسلط خود به متلب را افزایش دهید.
همچنین توصیه میکنیم در کنار این مقاله ، « پست محاسبات آماری در متلب » را حتما مطالعه کنید چون که در این مقاله با محاسبه شاخصهای آماری همچون میانگین و انحراف معیار سر و کار خواهیم داشت.
تولید اعداد تصادفی در متلب بصورت پیوسته
در بخش اول اعداد تصادفی میخواهیم اعداد تصادفی پیوسته را با متلب تولید نماییم.
ایجاد اعداد تصادفی با دستور rand در متلب
برای تعریف اعداد تصادفی در متلب بصورت یکنواخت در بازه صفر تا 1 از دستور rand استفاده میشود. این دستور را میتوان به چند شکل در متلب فراخوانی کرد:
1-فراخوانی بدون ورودی:
1 |
A=rand |
در حالتی که هیچ ورودی به دستور ندهیم فقط یک عدد تصادفی در بازه صفر تا 1 با احتمال یکنواخت ایجاد خواهد کرد.
2- اگر بخواهیم تعداد مشخصی اعداد تصادفی در بازه صفر تا 1 تولید کنیم کافی است به عنوان ورودی اندازه ماتریس موردنظر را به عنوان ورودی به آن بدهیم:
B1=rand(3) (به اندازه ماتریس 3*3)
B2=rand(5,2) (5 سطر و 2 ستون)
3- برای ساخت اعداد تصادفی در متلب بصورت عدد مختلط (موهومی) کافی است دستور rand را بصورت زیر فراخوانی کنیم: به عنوان مثال برای تولید 5 عدد تصادفی مختلط از هر سه حالت زیر میتوانیم استفاده کنیم:
1 2 3 |
C1=rand(1,5)+1i*rand C2=rand+1i*rand(1,5) C3=rand(1,5)+1i*rand(1,5) |
0.2098 + 0.3146i 0.2098 + 0.9038i 0.2098 + 0.5207i 0.2098 + 0.1622i 0.2098 + 0.1436i
4- برای تعریف اعداد تصادفی در متلب در بازه دلخواه با دستور rand در بازه دلخواه a تا b کافی است از فرمول زیر استفاده کنیم:
1 |
r = a + (b-a)*rand(N,M) |
به عنوان مثال میخواهیم 20 عدد اعداد تصادفی در بازه 10- تا 10 ایجاد کنیم:
1 |
D=-10+(10+10)*rand(20,1) |
5- اگر بخواهیم اعداد تصادفی که در هر مرتبه تولید میشوند ثابت باشند برای اینکار باید از دستور rng استفاده کرد که این دستور نحوه تولید اعداد تصادفی را ریست میکند که باعث میشود اعداد تصادفی بصورت ثابت تولید شوند. ( اصطلاحا seed را در هر دفعه تولید در حالت state نگه میدارد.) نحوه استفاده از این دستور بصورت زیر میباشد:
1 2 3 4 5 6 |
v = rng; E1 = rand(1,10) rng(v); E2 = rand(1,10) E1=E2 |
ساخت اعداد تصادفی با دستور unifrnd در متلب
برای تولید اعداد تصادفی در بازه دلخواه و در اندازه دلخواه میتوانیم علاوه بر شیوه که در دستور rand گفته شد بصورت راحتتر از دستور unifrnd استفاده کنیم.
برای استفاده از این دستور در ورودی اول و دوم بازه مورد نظر و در ورودی های سوم و چهارم اندازه ماتریس مورد نظر را وارد میکنیم. اگر برای آن اندازهای در نظر نگیریم به طور پیش فرض یک عدد در بازه دلخواه تولید خواهد کرد. به عنوان مثال میخواهیم به ترتیب یک و 20 عدد در بازه 10- تا 10 ایجاد کنیم:
1 |
A=unifrnd(-10,10); |
از هر دو شیوه زیر میتوان برای تولید اعداد تصادفی در بازه دلخواه به تعداد مشخص استفاده کرد:
1 2 |
B=unifrnd(-10,10,1,20); B=unifrnd(-10,10,[1 20]); |
همچنین میتوان بصورت زیر نیز از این دستور استفاده کرد:
1 2 |
a = 0; b = 1:5; C = unifrnd(a,b) |
در مثال فوق 5 عدد تولید میشود که اولین عدد بین صفر تا 1، دومین عدد بین صفر تا 2 و … و تا پنجمین عدد بین صفر تا 5 میباشد. در اینجا مقدار b یک بردار بوده و حتی میتواند یک ماتریس باشد. بصورت زیر:
1 2 |
B = repmat(b,5,1); R = unifrnd(a,B) |
خروجی این حالت یک ماتریس 5*5 خواهد بود که به طور مشابه اولین ستون بین صفر تا یک و … و پنجمین ستون بین صفر تا 5 میباشد. لازم به ذکر است که دستور repmat دستور کپی تهیه کردن از یک ماتریس میباشد که در اینجا کپی تهیه کردن از بردار b به اندازه مشخص میباشد.
تولید اعداد تصادفی با دستور randn در متلب
بسیاری از پدیدههای تصادفی همچون تراز سطح امواج دریا با توزیع نرمال مدل میشوند. توزیع نرمال ویژگیهای بسیار منحصر به فردی دارد که باعث کاربرد بسیار گسترده آن در پدیدههای مختلف شده است. اگر میانگین این توزیع صفر و انحراف معیار آن واحد باشد، به آن توزیع نرمال استاندارد میگویند.
برای تولید اعداد تصادفی که از توزیع نرمال استاندارد تبعیت میکنند از دستور randn در متلب استفاده میشود. این دستور تمام 5 حالت ویژگیهای دستور rand را دارد از جمله اینکه میتوان اعداد در تعداد مختلف و همچنین بصورت موهومی تعریف کرد. به عنوان مثال میخواهیم 1000 عدد که توزیع استاندارد نرمال داشته باشند را تولید کنیم:
1 2 3 4 5 |
A=randn(1,1000); Mean=0.0058; StandardDeviation=0.9911 |
همانطور که مشاهده میکنید مقدار میانگین و انحراف معیار تقریبا به ترتیب به مقدارهای صفر و یک نزدیک هستند که اگر تعداد اعداد تولید شده افزایش یابد، میانگین و انحراف معیار به ترتیب به صفر و یک میل خواهند کرد.
در صورتی که بخواهیم با استفاده از دستور randn در متلب توزیع نرمال با میانگین و انحراف معیار دلخواه تولید کنیم میتوانیم از همین دستور با یک فرمول مشخص استفاده کنیم. میتوان نشان داد که این رابطه از مبحث تبدیل احتمال بصورت زیر بدست میآید:
N(μ,σ)=μ+σ×N(0,1)
به عنوان مثال برای ایجاد اعداد تصادفی در متلب میخواهیم 1000 عدد تصادفی با توزیع استاندارد با میانگین 2 و انحراف معیار 3 را تولید کنیم. همچنین با دستور histogram توزیع آن را در 20 دسته رسم میکنیم:
1 2 3 4 |
B=2+3*randn(1,1000); histogram(B,20) mean(B)= 1.9581 StandardDeviation=std(B) = 2.8646 |
تولید اعداد تصادفی در متلب بصورت گسسته
در بخش قبل با تولید اعداد تصادفی پیوسته در متلب آشنا شدیم و در این بخش میخواهیم اعداد گسسته تصادفی را با متلب تولید نماییم.
ایجاد اعداد تصادفی بصورت گسسته با دستور randi در متلب
برای تولید اعداد تصادفی بصورت گسسته از دستور randi در متلب استفاده میشود. این دستور مشابه با دستور rand عمل میکند و بسیاری از ویژگیهای این دستور که گفته شد در randi نیز وجود دارد. به این صورت که در ورودی اول بردار بازه تولید عدد تصادفی است و در ورودی دوم اندازه موردنظر را برای اعداد تصادفی بیان میکنیم.
به عنوان مثال برای ایجاد اعداد تصادفی در متلب میخواهیم اعداد تصادفی گسسته در بازه 1 تا 10 و به تعداد 20 عدد تولید کنیم. این کار به شیوههای زیر انجام میشود:
1 2 3 4 |
A=randi(10,[1 20]) A=randi(10,1,20) A=randi([1,10],[1 20]) A=randi([1,10],1,20) |
از هر چهار شیوه بالا میتوان برای تعریف اعداد تصادفی در متلب بصورت گسسته استفاده کرد. دقت کنید که در دو شیوه اول اگر بازه از یک شروع شود نیازی به تعریف عدد یک نخواهد و فقط انتهای بازه کفایت میکند در غیر اینصورت باید ابتدای بازه تعریف شود.
امیدواریم به خوبی نحوه استفاده از دستور randi در متلب به چندین حالت میباشد، را فرابگیرید.
همچنین با مراجعه به راهنمای نرمافزار متلب میتوانید انواع زیردستورات این دستور را به طور کامل فرا بگیرید که مشابه دستور rand میباشد.
ساخت اعداد تصادفی بصورت جایگشت – دستور randperm در متلب
در این بخش دستور randperm در متلب را بیان خواهیم کرد که بسیار در آمار و احتمالات پرکاربرد میباشد.
جایگشتی از اعداد به معنای یک ترتیبی از یکسری اعداد مشخص میباشد که در این ترتیب امکان تکرار اعداد وجود ندارد و این انتخاب بدون جایگذاری میباشد.
برای تولید یک جایگشت (permutation) از اعداد تصادفی صحیح از دستور randperm در متلب استفاده میشود. به عنوان مثال میخواهیم جایگشتی از اعداد 1 تا 10 را داشته باشیم:
1 |
randperm(10) |
3 7 10 4 6 8 9 2 1 5
اگر بخواهیم یک جایگشتی از 5 عدد که بین اعداد 1 تا 10 را داشته باشیم بصورت زیر عمل خواهیم کرد:
1 |
randperm(10,5) |
6 3 1 4 9
انتخاب تعدادی نمونه از یک جمعیت بصورت تصادفی-دستور randsample در متلب
در بسیاری از مواقع نیاز داریم که از بین تعداد مشخصی از اعداد، تعدادی را به عنوان نمونه یا برنده انتخاب کنیم. دستور randsample این انتخاب را بصورت یکنواخت و تصادفی انجام میدهد. همچنین این انتخاب بدون جایگذاری میباشد.
به عنوان نمونه میخواهیم از بین 1000 نفر که هر کدام یک شماره از 1 تا 1000 دارند، 5 نفر را به طور تصادفی انتخاب کنیم که هر نفر نیز حداکثر یکبار میتواند انتخاب شود:
1 2 |
randsample(1000,5) 224 922 375 309 315 |
در این مقالهی آموزشی متلبِ سایتِ gam98.ir، انواع دستورات تولید اعداد تصادفی بیان شد. شما میتوانید علاوه بر پستهای آموزشیِ متلب، از « پروژههای متلب » آماده وبسایت ما بهره ببرید. در این پروژههای آماده، مهمترین و پرکاربردترین مسائل درسی و دانشجویی در محیط متلب کدنویسی و همراه با توضیحات کامل ارائه شدهاند.
این مقاله آموزشی به کوشش تیم تولید محتوای علمی و نرمافزاری گام98 در راستای ارتقای دانش شما در استفاده از نرمافزار متلب تولید شده است. درصورتی مفید بودن این مقاله آن را به دوستان و آشنایان خود معرفی نمایید.
مطالب زیر را حتما مطالعه کنید
کار با بردارها در متلب
آموزش کامل انواع دستورات توزیعهای آماری در متلب
در این مقاله قصد داریم انواع دستورات مهم توزیع های آماری در متلب را به همراه رسم انواع توزیعها و برازش با استفاده از توزیع های آماری بیان نماییم.
آموزش صفر تا 100 تحلیل المان میله به روش اجزا محدود
در ادامه دومین سری از آموزشهای روش المان محدود در این مقاله تحلیل المان میله به روش اجزا محدود را همراه با مثال به طور صفر تا صدی آموزش خواهیم داد.
آموزش جامع و کامل تحلیل المان فنر به روش اجزا محدود
در اولین مجموعه از مقالات آموزشی روش اجزا محدود، آموزش جامع و کامل تحلیل المان فنر به روش المان محدود را همراه با مثال برای شما عزیزان بیان خواهیم کرد.
روش اجزا محدود – Finite Element Method
روش اجزا محدود یک روش عددی برای حل مسائل مهندسی و فیزیکی میباشد. در این مقاله به طورکلی با کاربرد، تاریخچه و مراحل حل این روش آشنا خواهیم شد.
آموزش جامع انواع دستورات توزیع نرمال در متلب
در این مقاله انواع دستورات توزیع نرمال در متلب را به شما آموزش میدهیم.همچنین نحوه کار با توزیع های نرمال تک متغیره و چند متغیره را با جزئیات خواهید آموخت.
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.