% Clear the workspace
clear all;

% Parameters
R = 5000;
numNumbersValues = [100, 200, 300, 400, 500];
thetaStar = 2;

% Initialize mean squared error (MSE) array
MSEMean = [];

% Loop over different numbers of values
for numNumbers = numNumbersValues
    % Initialize array to store Theta_Dash_N values
    thetaDashNList = zeros(1, R);
    
    % Loop for R iterations
    for r = 1:R
        % Generate random values for Theta_k
        thetaKList = thetaStar + (rand(1, numNumbers) - 0.5);
        
        % Calculate Theta_Dash_N and store it
        thetaDashNList(r) = mean(thetaKList);
    end

    % Calculate mean squared error for each iteration
    MSE = (thetaDashNList - thetaStar).^2;
    
    % Calculate and store the mean of MSE values
    MSEMean(end + 1) = mean(MSE);
end

% True values for comparison
trueValues = 1 ./ (12 * numNumbersValues);

% Plotting the results
scatter(numNumbersValues, trueValues, 60,'MarkerEdgeColor',[0 0.5 0],'MarkerFaceColor',[0 0.7 0],'LineWidth',1.5);

hold on;
grid on;
scatter(numNumbersValues, MSEMean, 40,'MarkerEdgeColor',[1 .6 0],'MarkerFaceColor',[1 .8 0],'LineWidth',1.5);
legend("True Values", "Estimated Values", 'FontSize' , 14);
xlabel("Number of Values",'FontSize' , 14);
ylabel("Mean Squared Error",'FontSize' , 14);
title(['MSE vs. Number of Values for R = ', num2str(R)],'FontSize' , 14);