دستورات متلب

دستور rand در متلب | عدد تصادفی در بازه صفر تا یک

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

گرامر (syntax) استفاده از دستور rand در متلب

در هر زبان برنامه‌نویسی هر دستوری مطابق سینتکس یا گرامر خاصی استفاده می‌شود که نحوه ورودی‌ها و خروجی‌های آن دستور را مشخص می‌کند. سینتکس استفاده از دستور 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
				
			
بازگشت به لیست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *