52 lines
1.4 KiB
Plaintext
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
|