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