تولید اعداد تصادفی در متلب
بهنام خدا، سلام… تعداد جلسات آموزش متلب رایگان هوسم دو رقمی شد! 💪 در جلسه گذشته با ماتریس های خاص در متلب آشنا شدید. این جلسه میخواهیم نحوه تولید اعداد تصادفی در متلب را به شما آموزش دهیم. ماتریس های تصادفی نوع دیگری از ماتریس های خاص هستند. در متلب دستورهایی وجود دارند که یک ماتریس تصادفی با ابعاد دلخواه ایجاد میکنند. دستورهایی که ما در این جلسه بررسی خواهیم کرد عبارتنداز: دستور randi در متلب، دستور randn در متلب، دستور randperm در متلب، دستور rand در متلب و دستور magic در متلب
دستور rand در متلب
یکی از راههای تولید یک ماتریس تصادفی با ابعاد دلخواه، استفاده از دستور rand در متلب است. فکر میکنید دستور rand در متلب چه ورودیهایی بپذیرد؟ گفتیم دستور rand یک ماتریس تصادفی با ابعاد دلخواه تولید میکند. پس قاعدتا ورودی rand باید ابعاد دلخواه ما باشد. به این ترتیب که ابتدا تعداد سطرهای ماتریس مورد نظرمان را وارد میکنیم. کاما میگذاریم و بعد تعداد ستونها را وارد میکنیم. درست مثل دستورهای zeros و ones که در جلسه ششم یاد گرفتیم. خاطرتان هست دیگر؟ خب برویم چند مثال حل کنیم…
مثال 1
حالا فرض کنید با استفاده از دستور rand در متلب بخواهیم یک ماتریس تصادفی با ابعاد 2 در 3 تعریف کنیم. در این صورت باید بنویسیم:
>> x = rand(2, 3)
x = 0.9058 0.9134 0.0975 0.1270 0.6324 0.2785
مشاهده میکنید که نتیجه، یک ماتریس 2 در 3 است. تمامی عناصر این ماتریس، اعداد تصادفی هستند. همچنین دقت کنید که همه اعداد در بازه صفر تا یک قرار دارند. در واقع اعدادی که در خروجی دستور rand در متلب تولید میشوند، توزیع یکنواخت در بازه صفر تا یک دارند.
مثال 2
اگر بخواهیم یک بردار سطری تصادفی به طول 4 ایجاد کنیم چه؟ خب واضح است. مینویسیم:
>> rand(1, 4)
ans = 0.5469 0.9575 0.9649 0.1576
دقت کنید، یک بردار سطری به طول 4، یک سطر و چهار ستون دارد. ما هم همین اعداد را به rand دادیم. برای داشتن یک بردار سطری یا ستونی، ما حق نداریم تنها طول بردار را به تابع rand بدهیم. یعنی برای ایجاد بردار بالا نمیتوانیم بنویسیم rand(4(. چرا؟ خب ببینیم:
>> rand(4)
ans = 0.9706 0.1419 0.9595 0.9340 0.9572 0.4218 0.6557 0.6787 0.4854 0.9157 0.0357 0.7577 0.8003 0.7922 0.8491 0.7431
نتیجه یک بردار نیست. بلکه یک ماتریس مربعی است.
مثال 3
اگر یک ورودی به دستور rand بدهیم، نتیجه یک ماتریس مربعی خواهد بود. تعداد سطر و ستونهای ماتریس خروجی برابر با عددی است که در ورودی دادیم. پس دستور rand(2) و rand(2, 2) یکسان هستند؟ خب، ببینیم:
>> rand(2)
ans = 0.3922 0.1712 0.6555 0.7060
>> rand(2, 2)
ans = 0.0318 0.0462 0.2769 0.0971
مشاهده میکنید که هردو دستور یک ماتریس تصادفی 2 در 2 در خروجی میدهند. پس دو دستور rand(2) و rand(2, 2) خروجی یکسان دارند. شما اگر بخواهید یک ماتریس مربعی تصادفی تعریف کنید، کدام را دستور را ترجیح میدهید؟ مشخصا rand(2). چون راحتتر نوشته میشود. هدف متلب هم همین است! میخواهد کار را برایتان راحتتر کند.
نکته اگر دو دستور rand(2) و rand(2, 2) یکسان هستند، پس چرا دو ماتریس خروجی که در کد بالا تولید شدهاند با هم فرق دارند؟ خب ما گفتیم که rand ماتریس تصادفی تولید میکند. اگر دو ماتریس یکسان بودند که دیگر اسمشان ماتریس تصادفی نمیشد! البته، با تکنیکهایی میتوانیم یک ماتریس تصادفی با مثلا ابعاد 2×2 بسازیم که هیچوقت مقادیرش عوض نشود. یعنی برعکس مثال بالا… فعلا گفتن این مطلب در جلسه ششم زود است. شاید در ترفندهای متلب گفتیم…
>> x = rand(5, 1)
x =
0.1653
0.2486
0.5435
0.1864
0.1874
0.7684
>> y = rand(5, 5)
y =
0.0063 0.8180 0.5422 0.0815 0.1152
0.3678 0.4191 0.6591 0.6343 0.3933
0.2827 0.9210 0.1898 0.8284 0.0199
0.3817 0.8159 0.2827 0.0724 0.5028
0.2079 0.4000 0.2787 0.9832 0.8685
مثال 4
دستور rand بدون پرانتز و ورودیهایش هم برای متلب معنادار است. با نوشتن این دستور، یک عدد تصادفی خواهید گرفت!
>> rand
ans = 0.1622
پس اگر فقط یک عدد تصادفی میخواهید، کافی است بنویسید rand.
گفتیم rand اعدادی که تولید میکند در بازه صفر تا یک هستند. خب اگر بازه دیگری مد نظر ما باشد چه؟ خب با کمی بازی و ریاضی میتوان این نیاز را رفع کرد. اما متلب امکانات دیگری هم دارد. برویم سراغ بخش بعدی…
دستور randn در متلب
دستور randn در متلب نیز یک ماتریس تصادفی ایجاد میکند. خروجی دستور randn در متلب، یک تفاوت اساسی با خروجی rand دارد. این تفاوت، نوع توزیع اعداد است. دستور randn در متلب، اعدادی تولید میکنند که توزیع نرمال یا گوسی دارند. آن حرف n که در انتهای نام دستور randn آمده مخفف کلمه normal است. در حالیکه rand، توزیع یکنواخت (uniform) دارد. در تصویر زیر دو توزیع یکنواخت و نرمال نشان داده شدهاند.
در خروجی دستور randn در متلب، بیشتر اعداد حول میانگین، یعنی حول صفر هستند. اما اعداد محدود شده به محدوده خاصی نیستند. نحوه ورودی دادن به randn هم شبیه rand است. جلوی دستور پرانتز باز میکنیم. تعداد سطرها را وارد کرده، کاما میگذاریم و سپس تعداد ستونها را وارد میکنیم.
مثال 5
فرض کنید یک ماتریس تصادفی 3 در 4 با randn بخواهیم بسازیم. باید بنویسیم:
>> randn(3, 4)
ans = 1.3546 0.1240 -0.1977 0.8252 -1.0722 1.4367 -1.2078 1.3790 0.9610 -1.9609 2.9080 -1.0582
مثال 6
اگر یک ورودی به دستور randn بدهیم، یک ماتریس مربعی خواهیم داشت. مثلا اگر بخواهیم یک ماتریس مربعی تصادفی با توزیع نرمال و به ابعاد 2 در 2 داشته باشیم، باید بنویسیم:
>> randn(2)
ans = -0.2725 -0.2779 1.0984 0.7015
مثال 7
با نوشتن دستور randn به تنهایی و بدون پرانتز و ورودیها، یک عدد تصادفی خواهیم داشت. دقیقا مثل دستور rand در متلب.
>> randn
ans = -0.3538
>> z = randn(1, 4)
z =
-7.3550e-01 -1.1545e+00 -1.4556e+00 -1.1184e-04
خب تا اینجای جلسه دهم از آموزش متلب رایگان، ما دو دستور تولید اعداد تصادفی در متلب را بررسی کردیم:
- دستور rand که ماتریس تصادفی با توزیع یکنواخت در بازه صفر و یک تولید میکند.
- دستور randn که ماتریس تصادفی با توزیع نرمال تولید میکند.
تفاوت توزیع گوسین و یکنواخت
انتظار داریم با مفاهیم گوسین و یکنواخت آشنا باشید. بههمین دلیل، چندان درمورد این قضیه توضیح ندادیم. اما نکته کوچکی درباره یکنواخت و گوسین بگوییم.
توزیع یکنواخت
به شکل 2 دقیق نگاه کنید. تصویر زیر، یک توزیع یکنواخت را نشان میدهد. به محور افقی نگاه کنید. نشان میدهد که اعداد تولید شده همه بین بازه صفر و یک قرار دارند. همچنین، همه میلهها تا تقریبا 10 هزار بالا رفتهاند. ستون عمودی تعداد تکرارها را نشان میدهد. یعنی چه؟ به جمله بعدی خوب دقت و فکر کنید. یعنی، اگر با رندوم یکنواخت 10 میلیون عدد تولید کنیم، تعداد دفعاتی که عدد مثلا 0.5 تولید شده با تعداد دفعات تولید عدد مثلا 0.35 برابر است. پس با رندوم یکنواخت، احتمال انتخاب هرعددی بین بازه صفر و یک با سایر اعداد در همان بازه صفر و یک برابر است. میتوانیم بگوییم همه اعداد در بازه صفر و یک شانس برابری دارند…
توزیع گوسی
به شکل 3 دقیق نگاه کنید. این تصویر، یک توزیع گوسی را نشان میدهد. به محور افقی نگاه کنید. نشان میدهد که اعداد تولید شده همه بین بازه 3- و 3 قرار دارند. همچنین، میلهها حداکثر تا تا 25000 بالا رفتهاند. ستون عمودی تعداد تکرارها را نشان میدهد. یعنی چه؟ به جمله بعدی خوب دقت و فکر کنید. یعنی، اگر با رندوم گوسین 10 میلیون عدد انتخاب کنیم، تعداد دفعات تکرار حول عدد صفر بیشترین است و هرچه از صفر فاصله بگیریم اعداد شانس کمتری برای انتخاب دارند.
حال صفر چه ویژگیای دارد؟ صفر میانگین تابع گوسین است. چرا تا 3- پیش رفته؟ بهخاطر انحراف معیار… انحراف معیار randn برابر 1 است. طبق رابطه گوسین، تا چندبرابر مقدار انحراف (اینجا 3 برابر) همچنان مقدار وجود دارد. خارج از بازه 3 و 3- هم مقدار همچنان وجود دارد، اما بسیار کم هستند. میتوانیم بگوییم در تصادفی گوسین، حول میانگین، اعداد بیشترین شانس برای انتخاب را دارند و با فاصله گرفتن از میانگین شانس انتخاب کم میشود…
خروجی هردو دستور، ماتریسی با اعداد تصادفی اعشاری بود. حالا اگر مثلا بخواهیم یک عدد تصادفی بین 0 تا 100 انتخاب کنیم، چکار کنیم؟ نگران نباشید، متلب فکر آنجا را هم کرده. در بخش بعدی دستوری خواهید آموخت که ماتریس تصادفی با اعداد صحیح تولید میکند.
دستور randi در متلب
دستور randi در متلب برای تولید ماتریس تصادفی با اعداد صحیح مورد استفاده قرار میگیرد. متلب در توضیح این دستور میگوید «اعداد صحیح شبهتصادفی با توزیع یکنواخت». واژه شبهتصادفی (pseudorandom) یعنی اعداد تولید شده، کاملِ کامل هم تصادفی نیستند. اما به اندازه کافی تصادفی هستند! بگذریم، فعلا نیازی نیست روی عبارت شبهتصادفی تمرکز کنید…
تفاوت دستور randi با rand و randn
ورودی دادن به دستور randi کمی با rand و دستور randn در متلب متفاوت است. دستور randi در متلب دو تفاوت اساسی با دو دستور بالا دارد. تفاوت اول در نوع خروجی است. در دستور randi، خروجی اعداد صحیح هستند. حرف i در انتهای randi مخفف عبارت integer بهمعنای عدد صحیح است. اما در دو دستور قبلی، خروجی اعداد اعشاری هستند.
تفاوت اساسی دوم توانایی کنترل محدوده خروجی است. در دو دستور قبلی، ما کنترلی روی بازه اعداد خروجی نداشتیم. اما در دستور randi، میتوانیم محدوده اعداد خروجی را کنترل کنیم. در دستور randi همیشه بازهی پایین اعداد خروجی 1 است. یعنی اعداد خروجی همیشه 1 یا بیشتر هستند و اعداد کمتر از یک در خروجی وجود ندارند. اما بازهی بالای خروجی را ما تعیین میکنیم. یعنی خروجی دستور randi، اعداد تصادفی در بازهی 1 و n هستند. که این عدد n را ما تعیین خواهیم کرد.
چطور به دستور randi ورودی بدهیم؟
گفتیم در دستور rand در متلب ما باید مشخص کنیم حد بالای اعداد خروجی چه باشد. پس علاوه بر ابعاد ماتریس خروجی، ما عدد دیگری را نیز باید وارد کنیم. این عدد را باید اول از همه وارد کنیم. سپس ابعاد ماتریس خروجی را وارد میکنیم. پس شاید کمی سردرگم شده باشید. اصلا جای نگرانی نیست. در ادامه چند مثال آورده میشود تا مطلب برایتان روشن شود.
مثال 8
فرض کنید بخواهیم یک ماتریس تصادفی با اعداد صحیح به ابعاد 3 در 5 تعریف کنیم و محدودهی اعداد خروجی بین 1 و 20 باشد. در این صورت باید بنویسیم:
>> randi(20, 3, 5)
ans = 3 5 3 12 8 16 9 19 2 17 8 2 20 5 1
مشاهده کردید که ما جلوی دستور randi پرانتز باز کردیم و اول عدد 20 را نوشتیم. یعنی گفتیم اعداد خروجی بین 1 تا 20 باشد. با نگاهی به خروجی متوجه میشویم که کمترین عدد 1 و بیشترین عدد 20 است. البته دقت کنید خروجی randi تصادفی است و ممکن است ماکزیمم و مینیمم بازهی مورد نظرمان در خروجی نباشند. خب، بعد از وارد کردن عدد 20، کاما گذاشتیم و تعداد سطرها را وارد کردیم. سپس باز هم کاما گذاشتیم و تعداد ستونها را وارد کردیم. به همین راحتی ما یک ماتریس تصادفی به ابعاد 3 در 5 تعریف کردیم که خروجی آن اعداد صحیح بین 1 و 20 هستند.
مثال 9
برای تعریف ماتریس مربعی چکار باید بکنیم؟ مثلا فرض کنید بخواهیم یک ماتریس تصادفی 3 در 3 تعریف کنیم. با اعداد صحیح و در بازهی 1 تا 10. به این منظور باید بنویسیم:
>> randi(10, 3)
ans = 1 8 6 2 7 3 7 5 8
پس بعد از عدد 10 که حد بالای بازهی خروجی را تعیین میکند، ما فقط یک عدد دیگر وارد کردیم. وقتی فقط یک عدد برای ابعاد وارد میکنیم، دستور randi یک ماتریس مربعی تولید خواهد کرد. بنابراین در دستور بالا با وارد کردن عدد 3، یک ماتریس 3 در 3 تولید شد. و بازهی اعداد خروجی بین 1 تا 10 است.
مثال 10
اگر یک عدد به دستور randi بدهیم چه؟ مثلا:
>> randi(5)
ans = 4
وقتی یک عدد وارد میکنیم، دستور randi در متلب یک عدد تصادفی در خروجی میدهد. این خروجی، یک عدد صحیح است که در بازهی 1 تا 5 قرار دارد.
>> w = randi(15, 1, 6)
w =
14 12 14 12 2 8
خب تا اینجا ما سه دستور را بررسی کردیم. اما متلب دستورات دیگری هم برای تعریف اعداد تصادفی دارد! برویم سراغ دستور بعدی که بسیار شبیه دستور randi هست…
دستور randperm در متلب
چهارمین دستور از جلسه «تولید اعداد تصادفی در متلب»، دستور randperm در متلب است. فرض کنید شما مسئول انجام مصاحبه در یک شرکت هستید و 100 متقاضیِ کار دارید. شما میخواهید به صورت تصادفی مصاحبه را برای این 100 نفر انجام دهید. شاید شما بخواهید با متلب این کار را انجام دهید. یعنی لیست مصاحبهشوندهها را به صورت تصادفی با متلب بسازید. آیا میتوانید با دستورهایی که تا الان یاد گرفتید، چنین کاری کنید؟ خیر نمیتوانید…
شاید فکر کنید که دستور randi که خوب است. مثلا، یک بردار به طول 100 در بازه 1 تا 100 انتخاب میکنیم. توجه کنید، در دستور randi ممکن است عدد تکراری هم باشد. مثلا عدد 53 چهار بار انتخاب شده باشد. دستور randperm در متلب یکی دیگر از دستورهای متلب برای تعریف اعداد تصادفی است که چنین امکانی به شما خواهد داد. عبارت perm در انتهای دستور randperm مخفف عبارت permutation به معنای جایگشت است.
خروجی دستور randperm چه ویژگیهایی دارد؟
دستور randperm در متلب، یک ماتریس تولید نمیکند بلکه یک بردار تولید میکند. خروجی این دستور یک بردار با اعداد صحیح است. اما تفاوت عمده این دستور با سایر دستورهای بررسی شده فقط این نیست. بردار خروجی که دستور randperm در متلب تولید میکند، اعداد تکراری ندارد. این دستور در سادهترین حالت ممکن فقط یک عدد را بهعنوان ورودی میگیرد. فرض کنیم ورودی که به دستور میدهیم n باشد. دستور randperm(n) یک بردار تولید میکند به طول n که اعداد داخل آن در محدوده 1 تا n هستند که به صورت تصادفی چیده شدهاند. بیایید امتحان کنیم:
مثال 11
میخواهیم ببینیم اگر به دستور randperm در متلب، ورودی 10 را بدهیم، خروجی چه میشود:
>> randperm(10)
ans = 5 1 2 9 10 8 3 7 4 6
ما به دستور randperm عدد 10 را به عنوان ورودی دادیم. همانطور که مشاهده میکنید، خروجی برداری است به طول 10 که اعداد 1 تا 10 بهصورت تصادفی چیده شدهاند. در واقع اعداد 1 تا 10 را به هم ریخته (shuffle) و به ما تحویل داده… این همان چیزی است که برای مصاحبه میخواستیم. کافی است بنویسیم randperm(100).
randperm با دو ورودی
دستور randperm یک حالت دیگر هم دارد که دو ورودی میگیرد. ورودی اول طبق معمول بازهی اعداد خروجی (مثلا 1 تا n) را مشخص میکند. با وارد کردن ورودی دوم مثلا k، میتوانیم برداری به طول k داشته باشیم که اعداد آن به صورت رندم از بازهی 1 تا n برداشته شدهاند. در این حالت نیز خروجی randperm غیرتکراری هستند.
مثال 12
فرض کنید یک بردار به طول 6 بخواهیم که اعداد آن به صورت تصادفی از بازهی 1 تا 10 انتخاب شوند و این اعداد غیرتکراری هم باشند. برای این کار باید بنویسیم:
>> randperm(10, 6)
ans = 1 8 2 6 5 10
ساده بگوییم، با کد بالا به دستور randperm در متلب گفتهایم، 10 عدد تولید کن و 4 تا از این 10 عدد را دور بریز…
خسته شدید؟ برویم سراغ آخرین بخش از جلسه تولید اعداد تصادفی در متلب…
دستور magic در متلب
آخرین دستوری که بررسی میکنیم دستور magic در متلب است. این دستور یک ماتریس مربعی با اعداد تصادفی تولید میکند. فرض کنید به این دستور ورودی n را بدهیم. بازهی اعداد خروجی که این دستور تولید میکند بین 1 تا n2 است. یعنی اگر بنویسیم (magic(5 خواهیم داشت:
>> magic(5)
ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
اعداد بالا در بازه 1 تا 25 هستند. این دستور ورودی دیگری نمیپذیرد. همچنین خروجی این دستور همواره یک ماتریس مربعی است.
دریافت PDF جلسه تولید اعداد تصادفی در متلب
برای دریافت pdf این جلسه، لطفا ایمیل خود را در باکس زیر وارد کرده و روی دکمه «دریافت pdf» کلیک کنید.
منابع آموزش متلب
در فهرست زیر، تعدادی از منابع خوب آموزش متلب را معرفی کردهایم. ضرورتی وجود ندارد که اینها را نگاه کنید. چون ما برای آموزش متلب، این منابع را مطالعه و استفاده کردهایم.
خب یک جلسه طولانی از دستورات مهم تولید اعداد تصادفی در متلب را به پایان رساندیم. ازنظر ما این جلسه، مهمترین و مشکلترین جلسه آموزش متلب رایگان تا این جلسه بوده است. شاید نیاز باشد بازهم این جلسه را بخوانید. انتظار نداریم که با یک بار مطالعه به مباحث مسلط شوید. پس اگر خوب یاد نگرفتید، ناامید نشوید و بازهم مطالعه کنید. مثل همیشه، سوال، پیشنهاد و انتقاد خود را با ما مطرح کنید. با هوسم همراه باشید…
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
33 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام.
سوالی از قسمت دستور magic داشتم.
من بعد از هر بار اجرای دستور magic(2) یا magic(3) یک ماتریس تکراری بهم میده.
حتی بعد از clear دوباره همون ماتریس های قبلی رو میده.
انگار برای دستور magic(2) فقط یک ماتریس یکسان درنظر گرفته و اونو به عنوان خروجی نشون میده.
اگه بخوام با این دستور یه ماتریس متفاوت داشته باشم چیکار باید انجام بدم؟
سلام وقت بخیر من میخوام ماتریس ۳*۴ تولید کنم که تمام اعدادش به طور رندوم بین ۲و۴ باشه ….چه کدی باید بزنم؟
سلام
توضيحات خيلي کامل و شفاف بود
ممنون از گروه خوبتون
بسيار عالي بوده محتواي دوره تا اينجا
سلام
پاس تمرین ۵ اشتباهه به جای ۵ درایه ۶ درایه داره
سلام
من یک شکل نامنظم در متلب به وجود آورده ام، حالا میخوام خود متلب داخل این شکل یک سری نقاط تصادفی را در نظر بگیرد، ممنون میشم راهنمایی کنید.
حتی تصادفی هم نباشه مهم نیست. مدنظرم اینه که بتونم یه سری نقطه داخل این شکل رو از متلب بگیرم.
سلام حمید عزیز،
دقیق متوجه سوالتون نشدم و نمیدونم منظورتون از “شکل” چی هست. فرض رو بر این میذارم که شما یک بردار داشتید و المانهاش رو به هم ریختید و حالا میخواید یک تعداد مشخص از المانهای بردار رو انتخاب کنید. برای چنین کاری میتونید به بردار به صورت تصادفی اندیسدهی کنید. دستور randperm برای این کار مناسب هست.
چطور می توان اعداد تصادفی یک بازه را مثلا ۶ عدد از بین یک تا پنجاه طوری مرتب کرد که درقسمت میانی یا طرفین همگرا واگرا باشن؟ یعنی فاصله اعداد از هم در وسط بازه کمتر از بقیه بازه باشه و …
سلام محدثه عزیز،
احتمالا با توزیع گوسی میتونید به هدفتون برسید. با عملیات ریاضی بازه رو تغییر بدید.
سلام وقت بخیر .
چطور میتونم برنامه ای بنویسم که 500عدد تصادفی با توزیع یکنواخت بین 100 تا 1000 تولید کنه و بعدش اعداد بین بازه 100 تا 400 رو توی ماتریس A1و اعداد بین بازه 400 تا 600 رو توی ماتریس A 2 ذخیره کنه و رسمش کنه ؟؟؟ ممنون میشم راهنماییم کنید.
سلام، ممنون.
میتونید از دستور unifrnd استفاده کنید. مابقی مسئله هم ساده هست. نیاز به یک حلقه و یک عبارت شرطی دارید.
سلام . اگر بخواهیم یک عدد تصادفی بین ۱۰ و منفی ۱۰ پیدا کنیم باید چیکار کنیم؟
سلام، میتونید با عملیات ریاضی بازه رو تغییر بدید. مثلا یه عدد صحیح بین 1 تا 20 تعریف کنید و بعد 10 تا ازش کم کنید.
تولید (a,b )تا اعداد تصادفی در بازnاینطوری:
(b-a)*rand(1,n) +a
معادله ای که نوشتید کمی بهم ریخته. فکر میکنم منظورتون این عبارت هست:
a+(b-a)*rand(1,n)-
بله درسته
سلام.وقت بخیر
چطوری ممکنه که اعداد تصادفی با توزیع نرمال که مثبت باشند تولید کرد؟
سلام، ممنون
میتونید اعداد تولید شده را با یه عدد دلخواه جمع کنید.
این جمله رو لطفا اصلاح کنید. سپاس.
بین 1 تا n2 است. یعنی اگر بنویسیم magic(5( خواهیم داشت…
میشه گفت بین یک تا N به توان دو است.
اون قسمت مجیک هم چون انگلیسی قاطی فارسی شده پرانتزهاش به هم خورده
سلام،
اصلاح شد، ممنون 🌹
سلام ممنون بابت توضیحاتتون؛توی تابع magic من متوجه شدم که میانین ستون های مختلف یکسان میشه
آفرین به دقتتون. تو صفحه توضیحات این دستور، نوشته شده:
returns an n-by-n matrix constructed from the integers 1 through n2 with equal row and column sums
یعنی چیزی که شما بهش رسیدید کاملا درسته
سلام
توضیحاتتون فوق العاده جذاب و شفاف بود. همچنین موضوع رو خیلی جامع بررسی کردید.
درود بر شما. زنده باد.
سلام امیر عزیز
سپاس 🌹🙏
سلام با استفاده از چه دستوری میتوانم اعداد تصادفی بین 0 تا 0.5 را بدست بیارم؟
سلام
از دستور rand در متلب استفاده کنید. دستور زیر 10 عدد رندوم بین 0.5 تا 1.0 میسازه.
>> 0.5 + 0.5 * (rand(10
سلام.من میخواستم به تعداد 500 بار اعداد 1 و 2 را تولید کنم به طوری که احتمال اومدن عدد 1 برابر 0.2 و احتمال اومدن عدد 2 برابر 0.8 باشه. باید چکار کنم؟ لطفا راهنماییم کنید
سلام،
میتونید از کد زیر استفاده کنید:
x=rand;
if x<0.2
select=1;
else
select=2;
end
این کد، اعداد 1 و 2 رو با احتمال 0.2 و 0.8 تولید میکنه. برای اینکه 500 بار انتخاب بشه هم، خیلی ساده این کد رو توی حلقه بندازید.
یا اینکه از دستور randsrc استفاده کنید:
randsrc(500,1,[1 2;0.2 0.8])
خدا پدر و مادرتونو بیامرزه..من ب شدت از متلب میترسیدم. اما الان با انرjی دارم جلو میرم
سلام
سپاس 🌹🙏
عالی، خوشحالیم که بر ترستون غلبه کردید و درحال یادگیری هستید. متلب فوقالعاده شیرینه 👌
ممنون اموزشهاتون عالیه
سلام
سپاس 🌹
خوب
سپاس 🌹