%% (a) generate random numbers: n = 100000; x = randn(n, 1); for nsamples = [3 5 10 50] nsamples % compute mean, standard deviation and t: nmeans = 10000; means = zeros(nmeans, 1); sdevs = zeros(nmeans, 1); students = zeros(nmeans, 1 ); for i=1:nmeans sample = x(randi(n, nsamples, 1)); means(i) = mean(sample); sdevs(i) = std(sample); students(i) = mean(sample)/std(sample)*sqrt(nsamples); end % Gaussian pdfs: msdev = std(means); tsdev = 1.0; dxg = 0.01; xmax = 10.0; xmin = -xmax; xg = [xmin:dxg:xmax]; pm = exp(-0.5*(xg/msdev).^2)/sqrt(2.0*pi)/msdev; pt = exp(-0.5*(xg/tsdev).^2)/sqrt(2.0*pi)/tsdev; % plots: subplot(1, 2, 1) bins = xmin:0.2:xmax; [h,b] = hist(means, bins); h = h/sum(h)/(b(2)-b(1)); bar(b, h, 'facecolor', 'b', 'edgecolor', 'b') hold on plot(xg, pm, 'r', 'linewidth', 2) title(sprintf('sample size = %d', nsamples)); xlim([-3, 3]); xlabel('Mean'); ylabel('pdf'); hold off; subplot(1, 2, 2) bins = xmin:0.5:xmax; [h,b] = hist(students, bins); h = h/sum(h)/(b(2)-b(1)); bar(b, h, 'facecolor', 'b', 'edgecolor', 'b') hold on plot(xg, pt, 'r', 'linewidth', 2) title(sprintf('sample size = %d', nsamples)); xlim([-8, 8]); xlabel('Student-t'); ylabel('pdf'); hold off; savefigpdf(gcf, sprintf('tdistribution-n%02d.pdf', nsamples), 14, 5); pause(3.0) end