Page 1 of 1

6. ura (plan): for, tic-toc, randx

Posted: Mon Jan 09, 2023 9:36 am
by alesB
Zdravo!

Na šestem srečanju si bomo ogledali zanki

Code: Select all

for
in

Code: Select all

while
ter pokazali, zakaj se jim zaradi časovne zahtevnosti pri octave izogibamo.

Štoparico vklopimo z ukazom

Code: Select all

tic 
in izklopimo z

Code: Select all

tok

Za konkretni primer bomo izbrali nalogo iz verjetnosti: izračunali bomo, kolikšna je verjetnost, da sta med tremi naključno izbranimi ljudmi vsaj dva rojena na isti dan v tednu. Pred tem bomo spoznali, da naključna števila izžrebamo z ukazi

Code: Select all

rand
in

Code: Select all

randi


Okvirni seznam ukazov in kako se jih uporabi (nekateri so zakomentirani, shranite v plan222306.m):

Code: Select all

function []=plan222306()
 output_precision(8);
 n=100;
 aa=linspace(1,n,n);
 s1=0;
 tic
 for i=1:n
  s1=s1+aa(i);
 end
 toc
 s1

 s2=0;
 i=0;
 tic
 while i<n
  ++i;
  s2=s2+aa(i);
 end
 toc
 s2

 tic
 s3=sum(aa);
 toc
 s3

 rand;
 rand(4);
 rand(2,5);
 randn(2,5);
 rande(2,5);
 PP=randp(6,5,7);
 MM1=randi(7);
 MM2=randi(7,3);
 MM3=randi(7,3,9);
 MM4=randi([4 17],3,9);

% xx=rand(1,1000);
 xx=randn(1,1000);
% xx=rande(1,1000);
% xx=randp(3.43,1,1000);
% plot(xx,".","markersize",8);grid;

 N=100000;
 M0=0;
 M1=1;
 M2=2;
 dd=randi([1 7],N,3);
 for i=1:N
  dd1=dd(i,:);
  dd2=sort(dd1);
  dd3=diff(dd2);
  dd4=sign(dd3);
  dd5=sum(dd4);
  if dd5==0 M0=M0+1;
  elseif dd5==1 M1=M1+1;
  elseif dd5==2 M2=M2+1;
  else
   disp('napaka');
  end
 end
 p0=M0/N;
 p1=M1/N;
 p2=M2/N;
 [p0,p1,p2]
 [1,18,30]/49

end
Ogledali si bomo tudi neenakomerno razporejena naključna števila: normalno razporejena izžrebamo z randn, razporejena po Poissonu z randp in razporejena po eksponentni porazdelitvi z rande. Da bo bolj jasno za kaj gre, bomo vsako izbiro tudi narisali.

Se vidimo ob 17h,
lpa