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

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

rand()

0.35

هر بار که این دستور را اجرا کنید ، یک عدد متفاوت به ما می‌دهد. خوب سوالی که مطرح می‌شود این است که اگر نخواهیم عدد تولیدی بین صفر و یک باشد و در بازه [ a,b ] قرار بگیرد، باید چه کار کنیم ؟

y = a + (b – a ) * rand()

با دستور بالا بازه تولید عدد تصادفی را تعیین می‌کنیم.   در مثالهای بالا ، یک عدد تصادفی  تولید شد. اگر بخواهیم یک ماتریس تولید شود باید چه کار کنیم ؟ اگر بخواهید یک ماتریس با 10 ستون و 15 سطر عدد تصادفی بین صفر و یک داشته باشید کافی است بنویسید :

z = rand(15 , 10 )

ماتریس z  دارای 15 سطر و 10 ستون می‌باشد و تمامی‌اعداد آن بین صفر و یک می‌باشند. برای تغییر بازه تولید اعداد ماتریس z کافی است که از روش بالا استفاده کنید.

z = a + (b – a ) * rand( 15 , 10 )

  randi این تابع عدد صحیح تصادفی تولید می‌کند. عدد صحیحی به عدد می‌گویند که اعشار ندارد مثل 6 یا 25 این دستور برای کار کردن حتما باید یک ورودی به آن بدهیم و آن حداکثر عدد صحیح تصادفی می‌باشد که می‌تواند تولید کند. مثال

randi(6)

عدد تصادفی صحیح از 1 تا 6 تولید می‌کند مثلا 4

randi(28)

عدد تصادفی صحیح از 1 تا 28 تولید می‌کند مثلا 23

 

58 نظر در “تولید عدد تصادفی در متلب”

  1. سلام
    برای تولید یه تعداد عدد رندم مشخص بین یک بازه ی مشخص هم دستوری وجود دارد؟ یعنی مثلا 4 عدد رندم که مقدارشان بین (1و5) باشد.
    (5 3 3 1)

    1. سلام

      دستور
      randi
      عدد صحیح تصادفی تولید می کند.

      مثال
      randi(10,1,5)

      پنج عدد صحیح تصادفی بین 1 تا 10 تولید می کند. ماتریس خروجی 1 در 5 است که می شودپنج عدد.

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

    1. اول بايد شكل ها و رنگ ها را در يك آرايه يا تصوير تعريف كنيد

      و سپس يك توليد كننده عدد تصادفي داشته باشيد و براي شما يك عدد تصادفي توليد كند. سپس عدد تصادفي توليدي را متناظر با يكي از خانه هاي آرايه در نظر بگيريد. بدين ترتيب هر بار كه اجرا مي كنيد شكل و رنگي متفاوت خواهيد داشت.

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

        1. توجه فرمایید
          این دستور به صورت

          r = r/sum(r
          (:))

          چون در تایپ فارسی مکان پرانتزها آمده اول خط دستور اشتباه نمایش داده شده. این قسمت (:)) باید آخر دستور قرار گیرد.

    1. سلام
      کاری نداره ماتریس که تولید شد.
      بعدش یک حلقه بنویسید هر جا i , j با هم برابر بودند مقدار خروجی را صفر بگذارید.
      البته ممکنه شما بتونید راه حل دیگری معرفی کنید.

    1. سلام
      فرمول نمیخواهد.
      فرض کن ماتریس اولیه نامش
      A
      باشد. و ماتریس جدید
      B
      باشد.
      مقدار خانه های ماتریس جدید را از ماتریس A پر شود.
      کافی است اندیس های انتخاب خانه ها از ماتریس A به صورت تصادفی باشد.

      1. اصل قضیه اینه که من یه ماتریس 10 در 700 رو با روش min-max نرمال سازی کردم از درون این یک ماتریس تصادفی 10 در 40 باید بسازم تقریبا میشه گفت هیچ راهنمایی در نت پیدا نکردم

        1. دوست عزیز من هم همین موضوع را گفتم. در حالتی که تعداد سطرهای شما یکسان است کار بسیار ساده است.
          کافی است 40 تا عدد تصادفی صحیح با randint بین 1 تا 700 تولید کنی و به عنوان اندیس ستون استفاده کنی و بریزی در ماتریس نهایی.

  4. سلام
    من میخوام 5 تا نود را به صورت تصادفی در یک مربع 5*5 قرار بدم و مختصات x و y اونها را به دست بیارم
    میشه راهنماییم کنید؟ ممنون

    1. سلام
      شما باید مکان های تصادفی تولید کنید بین 1 تا 5 و سپس نودها را در اونها بریزید.
      مثلا
      node =[20 33
      12 44
      67 88
      99 33
      21 78]
      فرض کن اینها پنج تا نود من هستن.
      حالا فرض کن ماتریس 5 در 5 نهایی هم اسمش B هست :
      for i=1:5
      B(i,:) = randi(5)
      end

  5. سلام خسته نباشید من برای شبیه سازی از اعداد تصادفی استفاده میکنم و در هر بار شبیه سازی از نه تا عدد تصادفی استفاده میکنم. سوال من اینه که اگه بخوام مثلا صد بار شبیه سازی کنم میخوام 50 بار عدد تصادفی تولید بشه و 50 بار دیگه از RAND-1 استفاده کنم چیکار باید بکنم؟
    ممنون میشم کسی کمکم کنه

    1. اینم از برنامه ای که نوشتم برا تولید اعداد تصادفی
      u=zeros(9;n);
      for i=1:n
      u(1;i)=rand
      u(2,i)=rand
      .
      .
      .
      u(9,i)=rand;
      end

  6. سمانه ندری

    سلام میخوام یه بردارتصادفی شامل ۱۰۰۰عدد از۱تا۶بادستورrandnایجادکنم میشه راهنمایی کنید یاجوابو ایمیل کنید برام ممنون میشم

    1. ایران متلب

      فرقی نداره این دستور هم شبیه همون rand هست فقط اعدادش بر اساس توزیع نرمال تولید می شوند.

      1. سمانه ندری

        اگه منظورتون اینه به جای randi توی دستور،randnبذارم این کارو میکنم ولی خطا میده میگه باید ورودی یه اسکالرباشه .من دستورو اینحورنوشتم:
        (X=randi([1 6],1,1000
        اماوقتی بهجای randi،
        میذارمrandnخطا میده نمیدونم چکارکنم

  7. با سلام
    من میخواهم یکه ماتریس تصادفی 9 در 3 را به تعداد 500 عدد تولید کنم چکار باید انجام دهم؟
    ممنون از راهنماییتون

    1. ایران متلب

      سلام

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

  8. سلام ببخشید منبادستور randi. …
    1000تا عددی تصادفی که یا صفرن یا یکن تولیید کردم بعد اگه بخوام احتمال اینکه از 1000تا چند بار یک اومده رو به دست بیارم تو متلب باید از چی استفاده کنم یا اینکه چجوری بنویسمش

  9. سلام و ممنون از سایت خوبتون
    من میخوام یک ماتریس سه بعدی تولید کنم که در هر سطرش تنها یک عدد 1 وجود داشته باشه و مابقی درایه های اون سطر 0 باشه. میشه راهنماییم کنید

    1. سلام
      شما اول یک آرایه 3 بعدی تعریف کنید که همه خانه های آن صفر باشد :
      A = zeros(4,5,3

      این ماتریس 4 سطر و 5 ستون و 3 بعد دارد.
      چون 3 بعد دارد لذا دارای 12 سطر در مجموع می باشد.
      شما می بایست یک حلقه بنویسد و هر سطر آنرا اندیس دهی کنید و یکی از ستونهای آنرا به صورت تصادفی 1 کنید.
      A(i,r,j

      i از 1 تا 4 تغییر می کند
      j از 1 تا 3 تغییر می کند
      r یک عدد تصادفی صحیح بین 1 تا 5 می باشد.

  10. سلام
    چطور می توان تعداد M عدد تصادفی مثبت با مقدار mu و ave مشخص در متلب تولید کرد؟مثلا اگر از دستور زیر استفاده کنم اعداد تصادفی تولید می شود اما بعضی از آنها منفی است.
    R=random(‘norm’,0.25*10^-9,1,M,1);
    ممنونم

  11. سلام
    چطور می توان تعداد M عدد تصادفی مثبت با مقدار mu و ave مشخص در متلب تولید کرد؟مثلا اگر از دستور زیر استفاده کنم اعداد تصادفی تولید می شود اما بعضی از آنها منفی است.
    R=random(‘norm’,0.25*10^-9,1,M,1);
    ممنونم

  12. سلام میخام عدد تصادفی تولید کنم که حد بالا و پایینش دو تا بردار باشه.
    مثلا بین A و b باشه:
    a=[1 1 1 1 ]
    b=[7 8 9 9 ]

      1. با سلام
        سه تا ماتريس ١٠*٣ با اعداد تصافي ساختم حاصل اين عبارت رو چطور بايد در متلب حساب كنم
        abc£££
        منظور از اون علامت سيگما است سه تا سيگما بايد محاسبه كنيم
        aوbوc هم ماتريس ها هستن

        1. سلام
          می تونید با سه حلقه for تو در تو این کار انجام دهید.
          یا از تکنیک های محاسبات عددی استفاده کنید.

    1. سلام

      کار این دستور randn همین هست.
      n آخرش بر می گردد به توزیع نرمال.

      x = .6 + sqrt(0.1) * randn(5)

      دستور باالا توزیع نرمال با میانگین 0.6 و واریانس 0.1 تولید می کند.

  13. سلام . من می خواهم یک ماتریس 124* 124 تولید کنم از اعداد 1 تا 124 که در هر سطر اعداد غیر تکراری داشته باشد.

  14. لطفا پاسخ بدین
    می خوام 30 درصد از سطر های یک ماتریس رو به صورت تصادفی انتخاب کنم
    چیکار باید کنم؟

    1. ایران متلب

      سلام
      شما می توانید طول ماتریس را بدست بیاری با دستور size یا length یا …
      L
      سپس 30 درصد را درش ضرب کنی چون ممکنه اعشاری بشه روندش کنی
      L30

      سپس با دستور randi یک بردار با طول L30 تولید کنی که اعدادش بین 1 تا L باشه.
      A

      این بردار سطرهای انتخاب شده به صورت تصادفی هستند.

پیام بگذارید

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

twelve − = 11