% a szentpetervari paradoxon TESZTJE jatekhossz = 500000; nMinta = 10000; vagasok = 0; nyerek = zeros(nMinta,1); limNyerek = zeros(nMinta,1); for ii=1:nMinta; % szimulaljuk dobas = round(rand(jatekhossz,1)); % keressuk a fejet indF = find(dobas==1); % szamoljuk az elozo NEM fejet diff = [indF;1+jatekhossz]- [0;indF]; % vagunk: 2^23 ~ 8millio iNagy = find(diff>23); lNagy = length(iNagy); vagasok = vagasok + lNagy; limDiff = diff; limDiff(iNagy) = limDiff(iNagy)-23; limDiff((end+1):(end+lNagy))=23; % szamitjuk a nyeresegeket nyer = 2.^diff; limNyer = 2.^limDiff; nyerek(ii) = sum(nyer); limNyerek(ii) = sum(limNyer); if ~mod(ii,100) fprintf('%d\n',ii); end; end; % hisztogramot iratunk [xx,hh] = hist(log10(nyerek),200); [xl,hl] = hist(log10(limNyerek),200); fprintf('Atlagos nyerenemy (dobasonkent): %3.2f\n', ... % mean(nyerek)/jatekhossz); fprintf('Atlagos !korlatolt! nyerenemy (dobasonkent): %3.2f\n',...% mean(limNyerek)/jatekhossz); save 'petyer.mat';