30 Ocak 2012 Pazartesi

Matlabde olasılık problemleri için ipucu

Merhabalar

Bazı problemlerde olasılık kullanmak durumundayız. Bazen kesin yüzdeler veririz ve bunun gerçekleşmesini isteriz. Örneğin bir a değişkeninin değeri %80 olasılıkla 1, %20 olasılıkla 0 olmasını istersek demek ki 10 adımda 8 kez a = 1 ve 2 kez de a = 0 dır.
Matlab için hep kullandığımız rand fonksiyonu işimizi görür aslında. Alttaki fonksiyonu birkaç kez çalıştırıp j ve k değerlerini görebilirsiniz

j = 0;
k = 0;
for i = 1:10
   if rand <= 0.8
       j = j + 1;
   else
       k = k + 1;
   end
end
j
k



ve alttaki kod ise kesin  %80e %20 lik çalıştırmakta. döngü sayınız 10 ise durum aşağıdaki gibi


j = 0; k = 0;
r = randperm(10)
for i = 1:10
   if(r(i) <= 8)
       j = j + 1;
   else
       k = k + 1;
   end
end

k

Peki döngü sayısı 10un katı ise 1000 gibi ? Bu durumda yapılacak değişiklik 10 yerine 1000, 8 yerine de 800 konulur.
10'un katı değil ise. Dongu sayısını 10'a göre mod alıp kalan kadar rand yaparsınız olur biter. Birazcık hata kaçınılmaz.
not: randperm fonksiyonu rand gibi bu ve buna benzer problemler için oldukça kullanışlıdır, tavsiye ederim

Kolay gelsin