%% (a) generate normal distributed random numbers: n = 10000; x = randn( n, 1 ); %% (b) nsig = sum((x>=-1.0)&(x<=1.0)); Psig = nsig/length(x); fprintf('%d of %d data elements, i.e. %.2f%% are contained in the interval -1 to +1\n\n', ... nsig, length(x), 100.0*Psig ); %% (c) dx = 0.01; xx = -10:dx:10; % x-values pg = exp(-0.5*xx.^2)/sqrt(2*pi); % y-values Gaussian pdf % integral over the whole range: P = sum(pg)*dx; fprintf( 'Integral over the Gaussian pdf is %.3f\n', P ); % integral from -1 to 1: P = sum(pg((xx>=-1.0)&(xx<=1.0)))*dx; % we need to use xx, not the random numbers x! fprintf( 'Integral over the Gaussian pdf from -1 to 1 is %.4f\n', P ); %% (d) P = sum(pg((xx>=-2.0)&(xx<=2.0)))*dx; fprintf( 'Integral over the Gaussian pdf from -2 to 2 is %.4f\n', P ); P = sum(pg((xx>=-3.0)&(xx<=3.0)))*dx; fprintf( 'Integral over the Gaussian pdf from -3 to 3 is %.4f\n\n', P ); %% (e) probability of small ranges nr = 50; xmax = 3.0 xs = zeros(nr, 1); % size of integration interval Ps = zeros(nr, 1); % storage for i = 1:nr % upper limit goes from 4.0 down to 0.0: xupper = xmax*(nr-i)/nr; xs(i) = xupper; % integral from 0 to xupper: Ps(i) = sum(pg((xx>=0.0)&(xx<=xupper)))*dx; end plot( xs, Ps, 'linewidth', 3 ) xlim([0 xmax]) ylim([0 0.55]) xlabel('Integration interval') ylabel('Probability') fprintf('The probability P(0.1234) = %.4f\n\n', sum(x == 0.1234)/length(x) ); savefigpdf(gcf, 'normprobs.pdf', 12, 8);