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.

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

  • 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

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

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