17 lines
468 B
ObjectPascal
17 lines
468 B
ObjectPascal
const
|
|
n = 1000;
|
|
|
|
function randnormal(n: integer; mean, sd: real): array of real;
|
|
begin
|
|
var uniform1 := ArrRandomReal(n, 0, 1, 10);
|
|
var uniform2 := ArrRandomReal(n, 0, 1, 10);
|
|
result := uniform1.Zip(uniform2, (x, y) -> Cos(2 * PI * x) * Sqrt(-2 * Ln(y)) * sd + mean).ToArray;
|
|
end;
|
|
|
|
begin
|
|
var numbers := randnormal(n, 1, 0.5);
|
|
var mean := numbers.Average;
|
|
var std := numbers.Sum(x -> Sqr(x - mean) / n).Sqrt;
|
|
println('mean:', mean, 'stddev:', std);
|
|
end.
|