(phixonline)--> with javascript_semantics function gaussian(atom mean, atom variance) return sqrt(-2 * variance * log(rnd())) * cos(2 * variance * PI * rnd()) + mean end function function mean(sequence t) return sum(t)/length(t) end function function std(sequence t) atom squares = 0, avg = mean(t) for i=1 to length(t) do squares += power(avg-t[i],2) end for atom variance = squares/length(t) return sqrt(variance) end function procedure showHistogram(sequence t) for i=ceil(min(t)) to floor(max(t)) do integer n = 0 for k=1 to length(t) do n += ceil(t[k]-0.5)=i end for integer l = floor(n/length(t)*200) printf(1,"%d %s %d\n",{i,repeat('=',l),n}) end for end procedure sequence t = repeat(0,100000) integer avg = 50, variance = 10 for i=1 to length(t) do t[i] = gaussian(avg, variance) end for printf(1,"Mean: %g, expected %g\n",{mean(t),avg}) printf(1,"StdDev: %g, expected %g\n",{std(t),sqrt(variance)}) showHistogram(t)