function aprox_pi = ukol1_reseni(n)
% aprox_pi = ukol1_reseni(n)
% 
% funkce pocita aproximaci pi Buffonovou metodou
%
% n ... pocet pokusu hodu jehlou

% vzdalenost rovnobezek = 1
% delka jehly = 0.5
       
suma = 0;

for i = 1 : n           
    % urceni polohy jehly 
    y = rand; % y-ova souradnice pocatku jehly
    alfa = rand * pi; % uhel, ktery svira jehla s kladnym smerem osy x
    
    suma = suma + hod_jehlu(y, alfa);     
end

aprox_pi = n / suma;

% vypis vysledku
disp(['Aproximace pi: ', num2str(aprox_pi, '%.15f')])
disp(['Absolutni chyba: ', num2str(abs(aprox_pi - pi), '%.15f')])
disp(['Relativni chyba: ', num2str(100*abs(aprox_pi - pi)/pi, '%.3f'),'%'])

% konec

function p = hod_jehlu(y,alfa)
% funkce vraci hodnotu 0, pokud jehla neprotina zadnou rovnobezku
% funkce vraci hodnotu 1, pokud jehla nejakou rovnobezku protla

p = 0; % inicializace, neuspech

if y == 0 
    p = 1; % uspech
else    
    v = 0.5 * sin(alfa); % delka projekce jehly do osy y
    if v >= 1 - y
        p = 1; % uspech
    end
end
   
% konec

