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 + (b–a) * 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!
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?
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.
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?)
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
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?
Merhaba, -90 + (90+90)*rand(3,4) işinizi görecektir.
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.
Ş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
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?
“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
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
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