MATLAB Rastgele Sayı Üretme (rand, randi, randn)


Bu yazımızda MATLAB’da bulunan gömülü fonksiyonlara giriş yapacağız. Gömülü fonksiyonlar, bize programlama yaparken büyük kolaylıklar sağlarlar. Örneğin bir dizinin en büyük elemanını bulmak için döngülerle, kodlarla uğraşmadan tek komut ile sonuca ulaşabiliriz. Bu yazımızda, rastgele sayı üreten gömülü fonksiyonları inceleyeceğiz. Kullanacağımız fonksiyonlar:

  • rand()”: Uniform(düzgün, tekdüze) dağılmış sayı üretmek için
  • randi()”: Uniform(düzgün, tekdüze) dağılmış tam sayı üretmek için
  • randn()”: Normal dağılmış sayı üretmek için
  • randperm(n)”: 1 – n arası tam sayıların permütasyonu için

“rand()” Fonksiyonu

0 ile 1 arasında, NxN uniform sayılar üretmek için:

%Syntax: rand(N)
rand(3)

0 ile 1 arasında, MxN uniform sayılar üretmek için:

%Syntax: rand(M,N)
rand(2,5) %2x5

Belirli bir aralıktaki sayılardan, belirli adet rastgele sayı üretmek istiyorsak; “a” aralığın başlangıç sayısı, “b” aralığın bitiş sayısı olmak üzere, “a + (ba) * rand(M,N)” formülünü kullanırız. Örnek olarak, -10 ile 10 arasında “2×5” matris olacak şekilde sayı üretmek istiyorsak: “-10 + (10 – (-10)) * rand(2,5)” komutunu kullanmalıyız.

%Syntax: a + (b-a) * rand(M,N)
-10 + (10+10) * rand(2,5) %-10, 10 arasında 2x5

Gerçek ve sanal kısmı 0 ile 1 arasında normal dağılmış karmaşık sayı üretme:

%Syntax: rand + 1i * rand
rand + 1i * rand

“randi()” Fonksiyonu

1 ile N arasında, rastgele bir tam sayı üretmek için:

%Syntax: randi(N)
randi(7)

1 ile N arasında, MxM uniform tam sayılar üretmek için:

%Syntax: randi(N,M)
randi(7,3) %1-7 arası, 3x3

a ile b arasında, MxN uniform tam sayılar üretmek için:

%Syntax: randi([a b], M, N)
randi([-10 10], 2, 5) %-10 ile 10 arası, 2x5

“randn()” Fonksiyonu

NxN normal dağılmış rastgele sayılar üretmek için:

%Syntax: randn(N)
randn(3) %3x3

MxN normal dağılmış rastgele sayılar üretmek için:

%Syntax: randn(M,N)
randn(2,5) %2x5

Gerçek ve sanal kısmı normal dağılmış karmaşık sayı üretme:

%Syntax: randn + 1i*randn
randn + 1i*randn

“randperm()” Fonksiyonu

“randperm()” fonksiyonu, 1 ile bizim belirlediğimiz “N” aralıktaki tam sayıların rastgele permütasyonunu verir. 

%Syntax: randperm(N)
randperm(5) % 1 ile 5 arası sayıların permütasyonu
randperm(5) % 1 ile 5 arası sayıların permütasyonu 2

1 ile N arası tam sayıların M tanesinin permütasyonu için:

%Syntax: randperm(N)
randperm(5) % 1 ile 5 arası sayıların permütasyonu
randperm(5) % 1 ile 5 arası sayıların permütasyonu 2

“rng()Fonksiyonu

Rastgele sayı üretilirken, başlangıç olarak bir sayı seçilir. Rastgele sayı üretecinin başlangıç sayısını kontrol ederek, rastgele sayı üretirken aynı sonuçları alabiliriz:

b_s = rng;
randperm(5) %1-5 arası tam sayıların rastgele permütasyonu
rng(b_s)
randperm(5) %Aynı sonuç

Yeni içerikler için sitemizi takip etmeyi ve sitemize abone olmayı unutmayın. Yeni yazılarda görüşmek üzere!

close

Yeni yazılardan haberdar olmak için sitemize abone olun.

İstenmeyen posta göndermiyoruz! Sadece yeni yazılarla ilgili mail alacaksanız.

12 thoughts on “MATLAB Rastgele Sayı Üretme (rand, randi, randn)

  • 9 Nisan 2023 tarihinde, saat 17:04
    Permalink

    merhaba hocam elimde A=[21,34,56,78,98,76,54,15,45,67] notları var bunun not ortalamasını, 70’ten yüksek, 30’dan düşük not alanların sayısını , En yüksek ve en düşük notları nasıl buluruz?

    Yanıtla
    • 28 Ağustos 2023 tarihinde, saat 21:36
      Permalink

      Merhaba,

      en_yuksek = max(A);
      en_dusuk = min(A);
      ortalama = sum(A)/length(A); %mean da kullanılabilir
      30’dan düşükler için: A(A<30), 70’den yüksekler için A(A>70) komutlarını kullanabilirsiniz.

      Yanıtla
  • 3 Ocak 2023 tarihinde, saat 01:12
    Permalink

    Hocam merhaba,
    Belli bir kümedeki sayıları eşit sayıda karıştıracak bir kod nasıl yazılır?
    (Mesela a=[3 6 12 54] bu sayılar her biri 40 kez tekrar edecek şekilde rastgele nasıl karışırlar?)

    Yanıtla
    • 28 Ağustos 2023 tarihinde, saat 21:53
      Permalink

      Merhaba,

      Şu tarz bir kod istiyorsunuz galiba:

      a = [3,6,12,54]; %dizi
      n = 40; %tekrar sayısı

      for i=1:n
      disp(a(randperm(length(a))));
      end

      Yanıtla
  • 21 Temmuz 2022 tarihinde, saat 14:33
    Permalink

    Merhabalar, [-90, 90] aralığında 3×4’lük bir matris üretmem gerekiyor ama sayılar tam sayı olmamalı hem tam sayı hem virgüllü sayı olmalı nasıl bir yol izleyebilirim acaba?

    Yanıtla
    • 28 Ağustos 2023 tarihinde, saat 21:45
      Permalink

      Merhaba, -90 + (90+90)*rand(3,4) işinizi görecektir.

      Yanıtla
  • 24 Haziran 2022 tarihinde, saat 19:32
    Permalink

    Hocam merhaba,
    5 sayı türetip, bu sayılar birbirine eşit mi değil mi bunları gösteren kodu nasıl yazabiliriz? Teşekkürler.

    Yanıtla
    • 25 Haziran 2022 tarihinde, saat 23:45
      Permalink

      Şu tarz bir şey istiyorsunuz galiba:

      liste = [randi(10) randi(10) randi(10) randi(10) randi(10)];
      if liste(1) == liste(2) && liste(2) == liste(3) && liste(3) == liste(4) && liste(4) == liste(5)

      işlemler

      Yanıtla
  • 13 Haziran 2022 tarihinde, saat 19:05
    Permalink

    hocam 107 öğrencinin her biri için rand komutu kullanarak sınav notlarını gösteren 9 elemanlı satır vektörü oluşturmam gerekiyor, ancak vektördeki her bir elemanın 0,10,20,30,40,50,60,70,80,90,100 olmasını nasıl sağlarım?

    Yanıtla
    • 16 Haziran 2022 tarihinde, saat 11:47
      Permalink

      “rand” ile:

      ogrenciler = zeros(107,9);

      for i = 1:107
      for j = 1:9

      ogrenciler(i,j) = ceil(rand(1)*10)*10;

      end
      end
      ogrenciler

      “randi” ile:
      ogrenciler = zeros(107,9);

      for i = 1:107

      ogrenciler(i,:) = randi([0 10], 1, 9)*10;

      end
      ogrenciler

      Yanıtla
  • 10 Şubat 2021 tarihinde, saat 09:53
    Permalink

    merhaba hocam,
    elimde A=[1 2 5 4 8 78 45 56 23 12 7 9 50] diye bir matris var, elemanları sadece bu A matrisinin elemanlarından oluşan rastgele yeni matris oluşturmak istiyorum. nasıl bir yol izleyebilirim hangi komutla

    Yanıtla
    • 10 Şubat 2021 tarihinde, saat 20:49
      Permalink

      Kaça kaç matris olacak onu belirtmemişsiniz ancak örnek olarak;

      %A ile aynı boyutta, aynı elemanlara sahip rastgele matris:
      A=[1 2 5 4 8 78 45 56 23 12 7 9 50];
      B=reshape(A(randperm(numel(A))),size(A))

      %A'nın elemanlarından, farklı boyutlarda matris için:

      A=[1 2 5 4 8 78 45 56 23 12 7 9 50];
      B=[];
      for i = 1:3
      for j=1:3
      rastgele=randi(length(A));
      B(i,j) = A(rastgele);
      A(rastgele)=[];
      end
      end

      Yanıtla

Tunahan için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir