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

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

 

randperm

randperm(6)

[3 2 6 4 1 5]

این تابع وقتی که بخواهید اندیس های تصادفی تولید کنید بسیار مفید می باشد. یعنی شما یک بردار داده ورودی به اندازه ۱۰۰ نمونه دارید و می خواهید این ۱۰۰ نمونه را تصادفی انتخاب کنیدو با randperm (100) اندیس های تصادفی تولید کنید و سپس به عنوان اندیس بر روی ماتریس داده ورودی قرار دهید. بدین صورت شما نمونه های ورودی را تصادفی انتخاب خواهید کرد.

 

 

randn

تولید عدد تصادفی بر اساس توزیع گایوسین یا نویز سفید

نکته: خروجی می تواند بین -inf تا +inf باشد.

R = randn(3,4)

R =
1.1650     0.3516     0.0591   0.8717
0.6268    -0.6965    1.7971   -1.4462
0.0751     1.6961   0.2641    -0.7012

 

84 دیدگاه دربارهٔ «تولید عدد تصادفی در متلب»

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

    1. blank

      سلام

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

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

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

  2. blank

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

    1. blank

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

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

  3. blank

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

        1. blank

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

          r = r/sum(r
          (:))

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

    1. blank

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

    1. blank

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

      1. blank

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

        1. blank

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

  4. blank

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

    1. blank

      سلام
      شما باید مکان های تصادفی تولید کنید بین 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. blank

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

    1. blank

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

  6. blank
    سمانه ندری

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

    1. blank

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

      1. blank

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

  7. blank

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

    1. blank

      سلام

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

  8. blank

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

  9. blank

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

    1. blank

      سلام
      شما اول یک آرایه 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. blank

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

  11. blank

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

  12. blank

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

      1. blank

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

        1. blank

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

    1. blank

      سلام

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

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

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

  13. blank

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

  14. blank

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

    1. blank

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

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

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

    1. blank

      سلام
      تولید اعداد تصادفی integer
      randint(m,n,q)
      یعنی یک ماتریس با تعداد سطر m و تعداد ستون n که اعدادش بین 1 تا q هستند.

  15. blank

    سلام من میخوام دویست نقطه تصادفی از توزیع نرمالی با پارامترهای میانگین صفر و ماتریس کوریانسی که دارم ایجاد کنم میشه راهنماییم کنید؟

  16. blank

    سلام من میخوام بین صفر تا ده، هزار تا داده‌ی نویزی با توزیع مساوی تولید کنم چه دستوری باید استفاده کنم؟

  17. blank

    سلام وقتتون به خیر
    ببخشید من میخوام ببینم تعداد دفعات مختلف تاس بین 1تا6 باید از چه دستوری در متلب استفاده کنم.
    باتشکر

  18. blank

    سلام
    و ممنون از سايت خوبتون
    توليد اعداد تصادفي با ماكسيمم و مينيمم مشخص يا (بزرگتر از يك كمتر از x) چه طور ننوشته ميشه؟

  19. blank

    سلام
    من میخوام برنامه ای بنویسم که بااستفاده از توزیع یکنواخت یک بردار باتوزیع نرمال تولید کنه
    کسی میتونه راهنمایی کنه؟

  20. blank

    سلام خسته نباشید من می خواهم متلب عدد تصادفی مثلا بر اساس تابع توزیع نرمال تولید کند ولی بین بازه صفر و یک چه دستوری را باید بنویسم.
    دستوری که من در متلب نوشتم به صورت زیر است:
    for j = 1:N % Start of Monte Carlo loop
    R_mont4(j,1)= normrnd(0.7318,0.15606); % Normal distribution of R
    end
    ولی اعداد تصادفی تولیدی در بازه صفر و یک نیست!!!!
    ممنون میشم راهنماییم کنید.

    1. blank
      ایران متلب

      سلام
      normrand بر اساس توزیع احتمال نرمال یا گایوسین اعداد تصادفی تولید می کند و همانطور که می‌دانید اعداد تولیدی بر اساس توزیع نرمال می توانند هر عددی باشند.
      دستور rand فقط بین ۰ و ۱ تولید می کند.

  21. blank

    سلام من یک ماتریس 5*5 با اعداد بین 1 تا 100 که اعداد بزرگتر از 50 را در یک نمودار واحد نشون بده رو میخام

  22. blank

    سلام
    من میخوام یک تعداد کره و چند تا لوله رو که دارای شعاع و طول هستند به صورت رندوم درون یک مکعب جایگذاری کنم میشه لطفا کمکم کنید با تشکر

  23. blank

    سلام. من میخوام 500 تا عدد 1 و 2 تولید کنم به طوری احتمال اومدن عدد 1 برابر 0.2 و احتمال آمدن عدد 2 برابر 0.8 باشه.باید چکار کنم؟لطفا راهنماییم کنید

  24. blank

    سلام وقت بخیر
    چجور میتونم n عدد بین صفر ویک انتخاب کنم که تکراری نباشن و به ترتیب (از کوچک به بزرگ ) باشن ؟

  25. blank

    یک بردار رندوم 100 تایی تولید کنید که 50 درایه اول کاملا تصادفی بین یک و دو باشد و 50 درایه دوم به صورت تصادفی بین 4 و 5 باشد.

  26. blank

    سلام این رو چطور حل کنم
    یک بردار رندوم 100 تایی تولید کنید که 50 درایه اول کاملا تصادفی بین یک و دو باشد و 50 درایه دوم به صورت تصادفی بین 4 و 5 باشد.

  27. blank

    سلام
    چطور میتونم ی ماتریس با اعداد رندوم بین صفر و یک تولید کنم با سطر و ستون رندوم؟؟
    ممنون

    1. blank

      سلام
      به راهنمای متلب قسمت rng مراجعه کنید/
      https://www.mathworks.com/help/matlab/ref/rng.html

      ‘twister’
      Mersenne Twister

      ‘simdTwister’
      SIMD-oriented Fast Mersenne Twister

      ‘combRecursive’
      Combined multiple recursive

      ‘multFibonacci’
      Multiplicative Lagged Fibonacci

      ‘philox’
      Philox 4×32 generator with 10 rounds

      ‘threefry’
      Threefry 4×64 generator with 20 rounds

  28. blank

    سلام وقت بخیر
    چطور میتونم 38 تا از درایه های یک ماتریس 9*9 رو با اعداد تصادفی بین 1 تا 9 پر کنم بطوری که این 38 درایه به طور رندم در ماتریس انتخاب بشن.
    لطفا راهنماییم کنید.

  29. blank

    سلام من میخوام یک ماتریس 50 در 200 با درایه های بین 50 تا 100 بصورت رندوم تولید کنم ولی مشکل اینجاست که اعداد باید همه به صورت صعودی باشند و اختلاف خیلی کم یعنی همشون آروم و مثل هم تغیر کنن.باید چکار کنم؟

دیدگاه‌ خود را بنویسید

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