%% PICKING THE LOTTO NUMBERS WHILE SKIPPING SOME 
% Language : Matlab 2007a
% Authors : Autar Kaw
% Last Revised : November 10, 2008
% Abstract: This program chooses randomly m unique numbers to play
% the lotto.  Lotto numbers allowed are positive integers from
% xlow to xhigh, while numbers asked to be skipped are not chosen
clc
clear all
disp('This program chooses randomly m unique numbers to play')
disp('the lotto.  Lotto numbers allowed are positive integers from')
disp('xlow to xhigh, while numbers asked to be skipped are not chosen')
disp('  ')
%% INPUTS
% xlow= lowest integer allowed
xlow=1;
% xhigh = highest integer allowed
xhigh=53;
% number of integers to be picked
m=6;
% numbers to be skipped
lottoskip=[ 2  5  7 12  21];
disp ('INPUTS')
fprintf('Lowest integer allowed=%g',xlow)
fprintf('\nHighest integer allowed=%g',xhigh)
fprintf('\nNumbers to be picked=%g\n\n',m)
disp('Lotto numbers skipped')
lottoskip
disp(' ')
% Using the random number generator rand to get the lotto numbers.
% rand generates numbers between 0 and 1.  So we multiply that by xhigh-xlow+1
% and shift it by xlow and then floor it to get the integer part.  
%% SOLUTION
% number of lotto numbers to be skipped from being chosen
mskip=length(lottoskip);
i=1;
while (i<=m) 
    lottonum(i)=floor(xlow+rand*(xhigh-xlow+1));
    % flag= variable that keeps track of previous numbers 
    % being same or different from the number picked
    % also it checks if the numbers asked to skipped are
    % not chosen
    flag=0;
    % checking against previous numbers chosen
    for j=1:1:i-1
        if (lottonum(i)==lottonum(j)) 
            flag=1;
        end
    end
    % checking against numbers to be skipped
    for j=1:1:mskip
        if (lottonum(i)==lottoskip(j)) 
            flag=1;
        end
    end
    if flag==0   
        i=i+1;
    end
end
%% OUTPUT
disp(' ')
disp('OUTPUT')
disp('The lotto numbers picked are')
fprintf('%g ',lottonum)
disp ('  ')