RosettaCodeData/Task/Statistics-Normal-distribution/M2000-Interpreter/statistics-normal-distribut...

52 lines
1.4 KiB
Plaintext

module Statistics_Normal_distribution {
form 80, 50
n=100000
locale 1033
function generate (n as long = 100){
long i, m = n + n mod 2
double values[n], max=-10000, min=10000
double average, deviation, s, sq
for i=0 to m-1 step 2 {
double x,y,rsq,f
do
x = 2*rnd-1
y = 2*rnd-1
rsq = x^2 + y^2
when rsq >=1 or rsq=0
f=sqrt(-2*ln(rsq)/rsq)
values[i]= x * f
values[i+1]= y * f
s+=values[i]+values[i+1]
sq+=values[i]**2+values[i+1]**2
max=max.data(max, values[i], values[i+1])
min=min.data(min, values[i], values[i+1])
}
=values, s, sq, max, min
}
(a, sum, sumSq, max, min)=generate(n)
open "out2.txt" for output as #f
print #f, n; " Samples used."
mean = sum / n
print #f, "Mean = "; mean
print #f, "Std Dev = "; (sumSq /n -mean^2)^0.5
print #f, "Min = ";min
print #f, "Max = ";max
bins = 30
dim bins(0 to bins)
mm=max-min
mb=mm/bins
for i = 0 to len(a)-1
long k=(a[i]-min)/mb
bins(k)++
next i
print
max=bins()#max()
for b = 0 to bins
print #f, format$("{0:2:-5}|{1:68}",b*mb+min,string$("*",bins(b)/max*60)+" "+str$(bins(b)/n*100, locale)+"%")
next b
close #f
win "Notepad", dir$+"out2.txt"
}
Statistics_Normal_distribution