Matlab Programlama 18 Matlab de Rand Fonksiyonu Kullanımı

Merhabalar herkese. Yeni ve belkide programlamada kullanım alanları ve yaptırabildiği uygulamalar dolayısıyla programlamanın önemli konularından olan rastgele sayı üretmeye yardımcı olan  rand fonksiyonundan bahsetmeye çalışacağım bu yazımda sizlere.

Bismillah diyelim ve başlayalım.

Her programlama dilinde olduğu gibi Matlabde de rastgele sayı üretmeye sağlayan bir fonksiyonumuz bir metodumuz mevcuttur.

Temel kullanımı rand(n,m) şeklindedir. Bu ifade şunu yapar n satırlı ve m sütunlu bir matrisi 0 ile 1 arasında rastgele gelen ondalık sayılar ile doldurur.





Rand fonksiyonun en temel kullanımı ise rand(n) şeklindedir. Bu şu anlama gelir, n*n lik bir matrisi 0 ile 1 arasındaki rastgele sayılarla doldurur.




Şunu da söyleyelim eğer rand() fonksiyonuna bu şekilde parametresiz kullanılırsa sadece bir tane değer üretir.




Tabi biz işlerimizi her zaman 0 ile 1 arasında üretilen sayılar ile halledemiyoruz. Tam sayı değerlerine de ihtiyaç duyuyoruz. Peki rand fonksiyonunu kullanarak bunu nasıl gerçekleştireceğiz?

Geçen yazımdan hatırlayacağınız gibi bazı fonksiyonlar ile ondalıklı sayıları kullanılacak olan fonksiyonun kuralına göre tam sayı haline getirebiliyorduk. Burada da bu fonksiyonlardan yardım alarak rastgele tam sayılar oluşturmuş olacağız.

Mesela diyelim ki biz 0 ile 50 arasında rastgele değerler üretmek istiyoruz. Hemen temel olarak bir formül yazalım ve açıklayalım sonrada.

a=round(50*rand(1));

Şimdi adım adım formülün ne yaptığına bakalım. 

1. İşlem sırası aynı matematiksel işlem sırasıdır ve içten dışa doğru gidilir.

2. İlk olarak rand fonksiyonu 0 ile 1 arasında bir ondalıklı sayı üretir. Diyelimki bu sayı 0.8324 olsun.

3. Daha sonra bu değer 50 ile çarpılır. Elde edilen değer 41,62 olacaktır. 

4. Bu adım son adımdır ve round fonksiyonu işlemini gerçekleştirir. round fonksiyonunun vazifesi kendisine gelen değeri en yakın tam sayıya yuvarlayacaktır. Yani bu durumda bu işlem sonunda rastgele olarak 42 değerini üretmiş olduk.

Aklımıza şöyle bir soru geliyor peki illa 0 ile herhangi bir sayı arasında mı sayı üretebiliriz sadece?

Tabi ki hayır. Yani diyelim ki 20 ile 100 arasında bir değer üretmek isteyelim.

Bunu ise şöyle yaparız. Genel formül

a=100
b=20 olsun.

x=round(b+(a-b)*rand(1)); şeklinde olacaktır.Yani daha görünür duruma getirecek olursak.

x=round(20+80*rand(1));

bu ifade bize 20 ile 100 arasında değer üretecektir.

Bunları görelim şimdide. 

1. 0 ile 50 arasında değer üretme.


2. 20 ile 100 arasında değer üretme.


Tabi fonksiyonların kullanım yerleri önemli işlem sırası dikkate alındığı için. Aşağıdaki ifade de kullanım şeklinden dolayı 0 ile 1 değerlerini üretecektir sadece.


Değişik fantaziler sizin hayal gücünüze kalmış artık :D 



Tabi eğer burada yuvarlama fonksiyonlarından fix i kullanacak olursanız tüm değerleri 0 olan bir matris elde edersiniz. Çünkü fix gelen ondalık değeri 0 a doğru giderken ilk tam sayıya yuvarlıyordu.


Bu dersimizde bu kadardı diyelim. Sorularınızı yorumdan yada her hangi bir iletişim adresimden ulaştırabilirsiniz. Selametle. Kolaylıklar dilerim.

Murat Bilginer



Yorumlar