دستور راند یا توزیع راندوم

دستور rand در متلب (تولید اعداد تصادفی به زبان ساده)

matlab

مقایسه کدهای Matlab و Numpy برای بازتولید اعداد و آرایه های تصادفی

همانطور که می دانید نامپای (Numpy)، کتابخانه ای برای زبان برنامه نویسی پایتون (Python) است که از آن به همراه مجموعه ای از توابع ریاضی سطح بالا برای محاسبات ماتریس در پایتون و کار روی آرایه های برداری، ماتریس و تانسور استفاده می شود. متلب (Matlab) نیز یک زبان برنامه نویسی و محیط محاسبات عددی است که در آن می توان محاسبات ماتریسی، ترسیم توابع و داده ها، پیاده سازی الگوریتم ها و ایجاد رابط ها را پیاده کرد و رابطی برای برنامه های نوشته شده به زبانهای دیگر ایجاد کرد.

ویژگی مشترک Numpy و Matlab این است که از هر دوی آنها در طیف وسیعی از محاسبات ماتریسی و عددی استفاده می شود. با این وجود تفاوتهایی هم با یکدیگر دارند. ما در این پست نحوه تولید اعداد و آرایه های تصادفی در Matlab و Numpy را بررسی می کنیم و این دو را از لحاظ بازتولید اعداد تصادفی و آرایه های یکسان با هم مقایسه می نماییم.

 


متلب

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


 

حتما بخوانید: دانلود رایگان ۱۳ فیلم کاربردی آموزش شبکه عصبی متلب

اعداد و آرایه های تصادفی

هم نامپای و هم متلب می توانند با استفاده از یک دستور خاص، اعداد و آرایه های تصادفی تولید کنند. در اینجا دو مفهوم مهم و کلیدی وجود دارد:

  • توزیع اعداد تصادفی (Random number distribution)
  • دانه تصادفی (Random seed)

در مورد توزیع اعداد تصادفی، معمولا از توزیع یکنواخت و توزیع نرمال استاندارد (گاوسی) استفاده می کنیم. در نامپای می توانیم از numpy.random.rand برای تولید اعداد تصادفی با توزیع یکنواخت استفاده کنیم. در متلب نیز با استفاده از دستور rand می توانیم اعداد تصادفی با توزیع یکنواخت تولید کنیم. به مثالهای ساده زیر توجه کنید:

نامپای در پایتون:

import numpy as np

sample = np.random.rand(2)
print(sample)

خروجی:

[0.70573498 0.8595017 ]

متلب:

sample = rand(1, 2)

خروجی:

ans =

0.5390 0.7686

مثالهای بالا نمونه هایی از نحوه تولید اعداد تصادفی با توزیع یکنواخت هستند. علاوه بر این می توانیم اعداد تصادفی تولید کنیم که از توزیع نرمال استاندارد پیروی می کنند. برای اینکار از دستورهای زیر استفاده می کنیم:

نامپای در پایتون: np.random.randn

متلب: randn

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

از آموزشهای جدید متلب: حلقه if در متلب (آموزش گام به گام و نکات)

به عنوان مثال کد پایتون زیر را در نظر بگیرید:

import numpy as np
np.random.seed(10)

sample = np.random.rand(2)
print(sample)

که این اعداد تصادفی را تولید می کند:

[0.77132064 0.02075195]

در متلب نیز:

rng(10);
sample = rand(1, 2)

این خروجی را خواهیم داشت:

sample =0.7713 0.0208

مقایسه توابع Rand در متلب و نامپای

توابع Rand در متلب و نامپای برای محاسبات آرایه های مختلفی استفاده می شوند:

  • آرایه یک بعدی (1-D array) به بردار اشاره دارد.
  • آرایه دو بعدی (2-D array) به ماتریس اشاره دارد.
  • آرایه سه بعدی (3-D array) به تانسور مرتبه سوم اشاره دارد.
  • ……
  • آرایه n بعدی (n-D array) به تانسور مرتبه n اشاره دارد.

در ادامه قصد داریم اعداد تصادفی با توزیع یکنواخت را به ترتیب در نامپای و متلب تولید کنیم. علاوه بر این سعی میکنیم اعداد تصادفی یکسانی در نامپای و متلب تولید کنیم.

حتما بخوانید: کجا و به چه دلیل باید از نرم افزار متلب استفاده کنیم یا نکنیم؟

تولید آرایه یک بعدی

برای اینکه اعداد تصادفی یکسانی با توزیع یکنواخت در نامپای و متلب به دست بیاوریم، اندازه برداری را 4 و دانه تصادفی را 10 قرار می دهیم. بیایید امتحان کنیم:

نامپای:

import numpy as np
np.random.seed(10)

sample = np.random.rand(4)
print(sample)

با اجرای این کد خواهیم داشت:

[0.77132064 0.02075195 0.63364823 0.74880388]

متلب:

rng(10);
sample = rand(1, 4)

با اجرای این کد خواهیم داشت:

sample =

0.7713 0.0208 0.6336 0.7488

کاملا واضح است که هر دو بردار تصادفی تولید شده مشابه هم هستند.

آموزش انواع داده ها در متلب به زبان کاملا ساده

تولید آرایه دو بعدی

برای تولید آرایه دو بعدی، ابتدا ماتریس را 2 در 3 و دانه تصادفی را 10 قرار می دهیم.

نامپای:

import numpy as np
np.random.seed(10)

sample = np.random.rand(2, 3)
print(sample)

با اجرای این کد خواهیم داشت:

[[0.77132064 0.02075195 0.63364823] [0.74880388 0.49850701 0.22479665]]

متلب:

rng(10);

sample = rand(2, 3)

با اجرای آن خواهیم داشت:

sample =

0.7713 0.6336 0.4985
0.0208 0.7488 0.2248

همانطور که مشاهده می کنید، ماتریس های تصادفی تولید شده با توزیع یکنواخت، یکی هستند.

آموزش جدید متلبی: روش گوس سایدل در متلب از صفر تا صد

تولید آرایه سه بعدی

ابتدا اندازه ماتریس را 2 در 3 و دانه تصادفی را 10 قرار می دهیم.

نامپای:

import numpy as np
np.random.seed(10)sample = np.random.rand(2, 3, 2)
print(‘sample[:, :, 0] = ‘)
print()
print(sample[:, :, 0])
print()
print(‘sample[:, :, 1] = ‘)
print()
print(sample[:, :, 1])

با اجرای آن خواهیم داشت:

sample[:, :, 0] =

[[0.77132064 0.63364823 0.49850701] [0.19806286 0.16911084 0.68535982]]

sample[:, :, 1] =

[[0.02075195 0.74880388 0.22479665] [0.76053071 0.08833981 0.95339335]]

متلب:

rng(10);

sample = rand(2, 3, 2)

با اجرای آن خواهیم داشت:

sample(:,:,1) =

0.7713 0.6336 0.4985
0.0208 0.7488 0.2248

sample(:,:,2) =

0.1981 0.1691 0.6854
0.7605 0.0883 0.9534

مشاهده می کنید که تانسورهای تصادفی تولید شده با توزیع یکنواخت، یکی هستند.

دانلود کنید: ۷ درس کاربردی آموزش برنامه نویسی در متلب

تولید اعداد تصادفی با توزیع نرمال در نامپای و متلب

همانطور که دیدید، نامپای و متلب می توانند در صورت استفاده از یک دانه تصادفی، اعداد تصادفی یکسانی با توزیع یکنواخت تولید کنند. متاسفانه از آنجایی که نامپای و متلب از تبدیل های متفاوتی برای تولید نمونه ها از توزیع نرمال استاندارد استفاده می کنند، بنابراین مجبوریم از همان تبدیل در نامپای و متلب استفاده کنیم. در عمل، بازتولید خروجی ()randn متلب همانند نامپای هنوز هم امکان پذیر است.

نامپای:

import numpy as np
from scipy.stats import norm
np.random.seed(10)

sample = norm.ppf(np.random.rand(2, 3))
print(sample)

به این ترتیب خواهیم داشت:

[[ 0.74320312 -2.03846052 0.34153145] [ 0.67073049 -0.00374237 -0.75609325]]

متلب:

rng(10);
sample = norminv(rand(2, 3), 0, 1)

با این کار خواهیم داشت:

sample =

0.7432 0.3415 -0.0037
-2.0385 0.6707 -0.7561

همانطور که می بینید، ماتریس های تصادفی تولید شده با توزیع نرمال، یکی هستند.

 

براکت در متلب (آموزش گام به گام و نکات کاربردی) 

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

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

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

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست