It would be good to know more about what is being analyzed. But when I execute your code this is what I get. Why do you believe this is incorrect?
M = 10^2;
h = Sqrt[2]*RandomReal[1, M] + I*RandomReal[1, M];
n = Sqrt[2]*RandomReal[1, M] + I*RandomReal[1, M];
No = Variance[n];
P = 10^(z/10);
a = P*(Abs[h])^2/No;
OutageProb = 1 - (Gamma[1, 1/a])^2;
LogPlot[OutageProb, {z, 0, 20}, PlotRange -> {10^-4, All},
Frame -> True]

LogPlot[Mean[OutageProb], {z, 0, 20}, PlotRange -> {10^-4, All},
Frame -> True]
