(*Biegunowy wariant metody Boxa-Mullera: zbieramy punkty, które znajdą się wewnątrz okręgu jednostkowego.*)

RPG:=Module[{v1,v2,rsq,val,cnt},
val=0;
cnt=0;
(*Losujemy punkty dopóty, dopóki nie trafimy w okręg.*)
While[val==0,
v1=2RandomReal[]-1;
v2=2RandomReal[]-1;
rsq=v1^2+v2^2;
cnt=cnt+1;
If[rsq<=1,val=v1*Sqrt[-2*Log[rsq]/rsq]];
];
val
]

L=10000;

dist=Table[RPG,{i,1,L}];
dist2=Table[RandomVariate[UniformSumDistribution[12]]-6,{i,1,L}];
dist3=Table[RandomVariate[NormalDistribution[]],{i,1,L}];

Histogram[dist,{0.1}]

Median[dist]

Mean[dist]

Variance[dist]

StandardDeviation[dist]

Kurtosis[dist]

Skewness[dist]

PearsonChiSquareTest[dist]

KolmogorovSmirnovTest[dist,dist2]