Contents
Véletlen számok generálása
Többféleképp lehet véletlen számot csináli matlabban. Ezen eljárások mindegyike álvéletlen -idegen szóval pszeudorandom- számot generál. A randi(n) függvény -nevével ellentétben nem társkereső alkalmazás- egy véletlen (angolul:random) egész (angolul:integer) számot generál, 1 és a megadott n között vesz fel értékeket nagyjából egyenletes eloszlással (tehát minden szám azonos valószínűságú). Például a
randi(6)
egy kockadobást szimulál.
ans = 3
randi(6)
ans = 1
randi(6)
ans = 5
Látjuk, hogy tényleg nem mindig ugyanaz a kimenet.
Első közös feladat
Írjunk egy veletlenOsszead függvényt aminek bemenete egy n 1-nél nagyobb természetes szám, randi(n) paranccsal véletlen számokat generál amiket összead addig amíg 100-al egynelő vagy nagyobb számot nem kapok, visszatérő értékként padig megadja a véletlen számok számát.
function i=veletlenOsszead(n) i=0; osszeg=0; while osszeg<100 osszeg=osszeg+randi(n); i=i+1; end end
Teszteljük le
veletlenOsszead(6)
ans = 29
veletlenOsszead(20)
ans = 9
Második közös feladat
A fenti veletlenosszead függvényt egy kísérletnek tekintjük amit többször meg akarunk ismátelni. Írjunk egy vektor100 nevű függvényt aminek a bemenete n és kimenete egy 100 hosszú vektor ahol mindgyik elem egy veletlenOsszead(n) függvény kimenete
function v=vektor100(n) for i=1:100 v(i)=veletlenOsszead(n); end end
Teszteljük le:
veletlenVektor=vektor100(6)
veletlenVektor = Columns 1 through 13 29 27 29 26 31 32 28 27 27 33 25 27 35 Columns 14 through 26 27 29 27 28 28 27 27 32 29 25 32 27 32 Columns 27 through 39 27 26 31 30 29 28 28 28 32 30 28 27 28 Columns 40 through 52 31 28 27 28 31 31 29 28 25 28 30 27 27 Columns 53 through 65 25 32 29 25 31 34 26 30 32 31 34 26 31 Columns 66 through 78 30 27 29 27 30 34 32 27 33 30 29 30 25 Columns 79 through 91 29 28 27 28 27 27 26 26 29 29 32 34 29 Columns 92 through 100 29 34 30 26 27 32 24 30 26
Hisztogram készítése
A mintákat érték szerint csoportosítva hisztogrammot készíthetünk. (Ezt például statisztikában a sűrűségfüggvény becslésére szokták alkalmazni). Készítsünk a veletlenVektor-ból hisztogrammot.
histogram(veletlenVektor)
A mod(n,k) függvényről
A mod(n,k) függvény "n" maradékát adja meg ha elosztjuk "k"-val. Például mod(15,7) értéke 1 lesz mert 15 ben a 7 kétszer van meg és a maradék 1.
Első Házi feladat
A mod() függvény segítségével írjunk egy idenOktober programot, aminek a bemenete egy "n" szám 1 és 31 között, kimenete pedig megmondja hogy 2019 Október "n"-edike milyen napra esik. (Vegyük észre, hogy pl: Október 2, 9, 16 amik szerdák mind 2-t adnak maradékul, ha 7-el elosztom őket.)
function output = idenOktober(n) if mod(n,7)==1 output="hétfő"; elseif mod(n,7)==2 output="kedd"; elseif mod(n,7)==3 output="szerda"; elseif mod(n,7)==4 output="csütörtök"; elseif mod(n,7)==5 output="péntek"; elseif mod(n,7)==6 output="szombat"; elseif mod(n,7)==0 output="vasárnap"; end end
Második Házi feladat
Tegyük fel hogy érmedobás sorozatot szimulálok randi(2)-fügvénnyel. Ha 1-et kapok írásnak tekintem ha 2-t akkor fejnek. Írjunk egy amigFejlesz függvényt ami szimulál egy érmedobás sorozatot, addig amíg fejet nem kapunk. A függvény visszatérő értéke legyen az, hogy hányadik dobás lett fej.
function output = amigFejlesz output=1; while randi(2)==1 output=output+1; end end