a = 34441; t = 11254417; % mod value b = 4752782; %increment n = 3703 %no of samples r = zeros(1, n); x = zeros(1, n) x(1) = 13 for i = 2:n x(i + 1) = mod((x(i) * a + b), t); r(i) = x(i + 1) / t; %normalize to 0 to 1 end figure; histogram(r, 50); % Chi square ------------------------------------------------------ a = 34441; t = 11254417; % mod value b = 4752782; %increment n = 37000 %no of samples r = zeros(1, n); x = zeros(1, n) x(1) = 13 for i = 2:n x(i + 1) = mod((x(i) * a + b), t); r(i) = x(i + 1) / t; %normalize to 0 to 1 end %figure; %histogram(r, 50); bins = 10; edges = linspace(0, 1, bins + 1); obs = histcounts(r, edges); exp = n / bins; sum = 0; for i = 1:bins sum = sum + (obs(i) - exp)^2 / exp; end; alpha = 0.05; df = bins - 1; chicritical = chi2inv(1 - alpha, df); if sum < chicritical fprintf("ACCEPTED, UNIFORM"); else fprintf("REJECTED, NOT UNIFORM"); end nor = zeros(1, n); me = mean(r); sd = std(r); for i = 1:n nor(i) = (r(i) - me) / sd; end autocorr(nor);