% Programm "Simulation (Gesetz der Großen Zahlen)"

% Programm zur graphischen Darstellung der relativen Häufigkeit der Ergebnisses 'Zahl' bei einem n-fachen 
% Münzwurf

%Autor: Andreas Harder
%Datum: 02.07.09
%Version: 0.1

%Initialisierung und Deklaration der Variablen

clear
clc

count = 0;

% Benutzerdialog Anzahl der Würfe -----------------------------------------------------------------------------

maxAnzahlWurf=input('Bitte geben Sie die maximale Anzahl der Münzwürfe ein!')   

wurfn = zeros (maxAnzahlWurf) ;

% absolute Häufikeit bis zum k-ten Wurf initialisieren

absH = 1 : maxAnzahlWurf

for k = 1 : 1 : maxAnzahlWurf
    
    absH (k) = 0 ;
end %----------------------------------------------------------------------------------------------------------

relH = 1 : maxAnzahlWurf

for k = 1 : 1 : maxAnzahlWurf
    
   relH (k) = 0 ;
end %----------------------------------------------------------------------------------------------------------

% Würfelexperiment durchführen --------------------------------------------------------------------------------

for index = 1 : 1 : maxAnzahlWurf 
    
    % durch die Funktion rand() werden so n Zufallszahlen erzeugt
    zu = rand() ;
         
    if ( zu < 0.5 )
        
	% wenn die Zufallszahl kleiner als 0,5 ist, wird ihr der Status 0 zugewiesen (entspricht Ereignis "Kopf")           
      
	zu = 0; 
	fprintf ('die Münze zeigt "Kopf"')

    else

	% sonst wird ihr der Status 1 zugewiesen (entspricht Ereignis "Zahl")
        
	zu = 1               
      fprintf ('die Münze zeigt "Zahl"')

	%der Zähler zählt die Anzahl der Würfe mit dem Status 1 (Ergebnis "Zahl")
            
      count = count + 1     
    end
 
    % Vektor wurfn hält alle Würfelergebnisse

    wurfn (index) = zu  ; 

    % Ausgabe des Vektors auf der Konsole 
      
    wurfn (index ) ;             
    
end % -----------------------------------------------------------------------------------------------------------

% Hilfsvariable h nimmt die Häufigkeit an

h = 0      
                   
%k ist ein Zähler, der die Anzahl der "zahl"-Würfe zählt bis zu der aktuellen Position k

for k = 1 : 1 : maxAnzahlWurf  

    %Kontrollausgabe
        
    absH(k) ;      
   
    % absolute Häufigkeit von 1 bis zum k-ten Schritt   
 
    h = h + absH(k) + wurfn (k) ;  
    absH(k) = h  ;  

    % relative Häufigkeit von 1 bis zum k-ten Schritt (Erfolge mit Status 1 bis zum k-ten Wurf)

    relH(k) = absH (k) / k   ;
    
    %Kontrollausgabe auf der Konsole von der Häufigkeit h, des Summenvektors, und der relativen Häufigkeit    
    
    h  ;                  
    absH(k) ;
    relH(k) ;
        
end % -------------------------------------------------------------------------------------------------------------

% Graphik ---------------------------------------------------------------------------------------------------------

y = 1 : maxAnzahlWurf
x1 = 1 : maxAnzahlWurf
x2 = 1 : maxAnzahlWurf

for k = 1 : 1 : maxAnzahlWurf
    x1 (k) = 0.5 + eps ;
    x2 (k) = 0.5 - eps ;
end

plot(y,relH, y, x1, y, x2)

% -----------------------------------------------------------------------------------------------------------------

