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
kve 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
j kPeki 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
