55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
Module CheckIt {
|
|
Function StdDev (A()) {
|
|
\\ A() has a copy of values
|
|
N=Len(A())
|
|
if N<1 then Error "Empty Array"
|
|
M=Each(A())
|
|
k=0
|
|
\\ make sum, dev same type as A(k)
|
|
sum=A(k)-A(k)
|
|
dev=sum
|
|
\\ find mean
|
|
While M {
|
|
sum+=Array(M)
|
|
}
|
|
Mean=sum/N
|
|
\\ make a pointet to A()
|
|
P=A()
|
|
\\ subtruct from each item
|
|
P-=Mean
|
|
|
|
M=Each(P)
|
|
While M {
|
|
dev+=Array(M)*Array(M)
|
|
}
|
|
\\ as pointer to arrray
|
|
=(if(dev>0->Sqrt(dev/N), 0), Mean)
|
|
}
|
|
Function randomNormal {
|
|
\\ by default all numbers are double
|
|
\\ cos() get degrees
|
|
=1+Cos(360 * rnd) * Sqrt(-2 * Ln(rnd)) /2
|
|
}
|
|
\\ fill array calling randomNormal() for each item
|
|
Dim A(1000)<<randomNormal()
|
|
\\ we can pass a pointer to array and place it to stack of values
|
|
DisplayMeanAndStdDeviation(A()) ' mean ~ 1 std deviation ~0.5
|
|
\\ check M2000 rnd only
|
|
Dim B(1000)<<rnd
|
|
DisplayMeanAndStdDeviation(B()) ' mean ~ 0.5 std deviation ~0.28
|
|
|
|
|
|
DisplayMeanAndStdDeviation((0,0,14,14)) ' mean = 7 std deviation = 7
|
|
DisplayMeanAndStdDeviation((0,6,8,14)) ' mean = 7 std deviation = 5
|
|
DisplayMeanAndStdDeviation((6,6,8,8)) ' mean = 7 std deviation = 1
|
|
|
|
Sub DisplayMeanAndStdDeviation(A)
|
|
\\ push to stack all items of an array (need an array pointer)
|
|
Push ! StdDev(A)
|
|
\\ read from strack two numbers
|
|
Print "Mean is "; Number
|
|
Print "Standard Deviation is "; Number
|
|
End Sub
|
|
}
|
|
Checkit
|