include xpllib; \for Print func real Mean(X, N); real X; int N; real Sum; int I; [Sum:= 0.; for I:= 0 to N-1 do Sum:= Sum + X(I); return Sum/float(N); ]; func real StdDev(X, N, Mean); real X; int N; real Mean; real Sum; int I; [Sum:= 0.; for I:= 0 to N-1 do Sum:= Sum + sq(X(I) - Mean); return sqrt(Sum/float(N)); ]; int Size, J, K, Sums(10), Scale; real A, M; [Size:= 100; repeat A:= RlRes(Size); for J:= 0 to Size-1 do A(J):= float(Ran(1_000_000)) / 1e6; Print("For %d random numbers:\n", Size); M:= Mean(A, Size); Print(" mean = %1.9f\n", M); Print(" stddev = %1.9f\n", StdDev(A, Size, M)); Scale:= Size / 100; Print(" scale = %d per asterisk\n", Scale); for J:= 0 to 10-1 do Sums(J):= 0; for J:= 0 to Size-1 do [K:= fix(Floor(A(J)*10.)); Sums(K):= Sums(K)+1; ]; for J:= 0 to 8 do [Sums(J):= Sums(J) / Scale; Print(" 0.%d - 0.%d: ", J, J+1); for K:= 1 to Sums(J) do ChOut(0, ^*); CrLf(0); ]; Print(" 0.9 - 1.0: "); for K:= 1 to Sums(9)/Scale do ChOut(0, ^*); CrLf(0); CrLf(0); Size:= Size * 10; until Size > 10_000; ]