(phixonline)-->
with javascript_semantics
procedure sample(integer n)
-- show mean, standard deviation. Find max, min.
sequence dat = repeat(0,n)
for i=1 to n do
dat[i] = sqrt(-2*log(rnd()))*cos(2*PI*rnd())
end for
printf(1,"%d data terms used.\n",{n})
atom mean = sum(dat)/n,
mx = max(dat),
mn = min(dat),
range = mx-mn
printf(1,"Largest term was %g & smallest was %g\n",{mx,mn})
printf(1,"Mean = %g\n",{mean})
printf(1,"Stddev = %g\n",sqrt(sum(sq_mul(dat,dat))/n-mean*mean))
-- show histogram
integer nBins = 50
sequence bins = repeat(0,nBins+1)
for i=1 to n do
integer bdx = floor((dat[i]-mn)/range*nBins)+1
bins[bdx] += 1
end for
for b=1 to nBins do
puts(1,repeat('#',floor(nBins*bins[b]/n*30))&"\n")
end for
end procedure
sample(100000)