% lotto paradoxon szimulacio

% parameterek
nL  = 90;          % az osszes szam
nO  = 5;           % hanyas
nH  = 100000;     % hany jatekot szimulalunk

% foglalunk helyet
lSort = zeros(nH,nO);
lSucc = zeros(nH,nO-1);

% generaljuk a huzasokat
for ii=1:nH;
    isBad=1;
    while isBad;
        lEgy = sort(ceil(rand(1,nO)*nL));
        dEgy = lEgy(2:end)-lEgy(1:(end-1));
        if isempty(find(~dEgy,1));
            isBad=0;
        end;
    end;
    lSort(ii,:) = lEgy;
    lSucc(ii,:) = dEgy;
    if ~mod(ii,10000);
        fprintf('%d\n',ii/1000);
    end;
end;

% abrazoljuk a kulonbsegek hisztogramjat
hist(lSucc(:),(1:90)-0.5);

% keressuk azon elemeket, ahol 1 a kulonbseg
iTwo = find(lSucc==1);

fprintf('Ket elemhossz: %5.4f\n',length(iTwo)/nH);

% nullazunk minden indexet, ami NEM egy.
lInd=zeros(size(lSucc));
lInd(iTwo) = 1;

% ebben - mivel CSAK nulla es egy volt - az eredmeny 0,1,2
fMat   = [1 1];     % szuro matrix
lThree = filter(fMat,1,lInd,-100,2);
iThree = find(lThree==2);

fprintf('Harom elemhossz: %5.4f\n',length(iThree)/nH);
