دستور rand در نرمافزار متلب برای تولید اعداد تصادفی در بازه صفر تا یک با توزیع یکنواخت استفاده میشود. در بسیاری از موارد از جمله مسائل مرتبط با بهینهسازی، یادگیری ماشین و بسیاری از مسائل دیگر نیاز به تولید اعداد تصادفی هستیم. در این مقاله با حل چندین مثال نحوه استفاده از این دستور را فرا خواهیم گرفت.
گرامر (syntax) استفاده از دستور rand در متلب
در هر زبان برنامهنویسی هر دستوری مطابق سینتکس یا گرامر خاصی استفاده میشود که نحوه ورودیها و خروجیهای آن دستور را مشخص میکند. سینتکس استفاده از دستور rand در متلب بصورت زیر است :
مثالهای مختلف کار با دستور rand
در ادامه با ارائه چند مثال نحوه استفاده از این دستور را بیان میکنیم.
مثال اول : تولید یک عدد تصادفی
a = rand
% Result
a = 0.5821
مثال دوم : تولید اعداد تصادفی با ابعاد n*n
b = rand(5)
% Result
b =
0.1949 0.9007 0.0627 0.4873 0.4161
0.5630 0.5499 0.9595 0.1282 0.9802
0.9594 0.9539 0.8649 0.8289 0.5021
0.0747 0.4987 0.2796 0.4187 0.3877
0.6826 0.2712 0.9621 0.1091 0.1463
نکته : در این مثال n = 5 است.
مثال سوم : تولید یک عدد تصادفی با ابعاد دلخواه
c1 = rand(2,3)
c2 = rand(2,3,2)
% Results:
c1 =
0.1380 0.8014 0.2665
0.1695 0.7759 0.5102
c2(:,:,1) =
0.4306 0.7243 0.3720
0.1029 0.9194 0.5549
c2(:,:,2) =
0.4757 0.7102 0.0001
0.4737 0.4679 0.6107
نکته : در مثال اول ماتریسی دوبعدی (دو ورودی) و در مثال دوم ماتریسی سهبعدی (سه ورودی) تولید شد. از این ایده میتوان برای تولید ماتریس n بعدی (n ورودی) نیز استفاده کرد.
همچنین ابعاد ماتریس تصادفی میتواند بصورت یک ورودی برداری نیز به دستور rand داده شوند:
c3 = rand([2 3])
% Results:
c3 =
0.7651 0.3043 0.5381
0.4849 0.6720 0.8159
مثالهایی با تنظیمات بیشتر برای تولید اعداد تصادفی با دستور rand در متلب
مثال چهارم : تولید عدد تصادفی با فرم مشخص : تولید عدد تصادفی مختلط
برای این منظور از زیردستور like استفاده میشود.
d1 = rand(3,3,'like',1i)
% Results:
d1 =
0.3516 + 0.9168i 0.1915 + 0.5141i 0.8420 + 0.0609i
0.9078 + 0.7542i 0.5622 + 0.2686i 0.5830 + 0.4445i
0.4291 + 0.7950i 0.0295 + 0.6824i 0.9793 + 0.9968i
همچنین میتوان ماتریسی با ابعاد مشخص و نوع داده 'single' تولید نمود:
A = single([1 2 ; 3 7 ; 5 -2]) ;
d2 = rand(size(A))
d3 = rand(size(A),'like',A)
% Results:
d2 =
0.8046 0.7072
0.9855 0.5052
0.1340 0.9542
d3 =
3×2 single matrix
0.7068 0.6572
0.3046 0.8366
0.3980 0.4175
مثال پنجم : تولید اعداد تصادفی با یک نوع مشخص
E = rand([1 10],'single')
E =
1×10 single row vector
Columns 1 through 8
0.3715 0.2133 0.5765 0.2725 0.2215 0.8032 0.0049 0.6529
Columns 9 through 10
0.9275 0.1593
نکته : دقت نمایید که به طور پیشفرض اعداد تصادفی بصورت 'double' تولید میگردند. همچنین اعداد تصادفی با دستور rand را فقط میتوان به دو صورت داده 'double' و 'single' تولید نمود.
مثال ششم : تولید اعداد تصادفی براساس زمان فعلی
مولدهای تولید اعداد تصادفی به طور پیشفرض از الگوی مشخصی برای تولید اعداد تصادفی استفاده میکنند. بنابراین هر زمانی که متلب مجددا شروع به کار کند براساس یک الگو اعداد تصادفی تولید شده و به ترتیب اعداد یکسانی تولید مینمایند. برای تغییر مکانیزم تولید اعداد تصادفی براساس زمان فعلی از دستور rng(‘shuffle’) استفاده میشود.
rng('shuffle')
F = rand
نکته : برای انجام تنظیمات بیشتر از میتوان از دستور RandStream استفاده نمود و از مولدهای مختلف تولید اعداد تصادفی استفاده نمود.
تولید اعداد تصادفی در بازه دلخواه با دستور rand
برای تولید اعداد تصادفی در بازه دلخواه [a b] با دستور rand از رابطه زیر استفاده میشود:
C = (b-a)*rand() + a
مثال هفتم : تولید عدد تصادفی در بازه 2- تا 2 :
a = -2 ;
b = 2 ;
C = (b-a)*rand() + a
%Results
C = 0.2491