begin comment calculate correlation; real array aa[1:100000]; real array bb[1:100000]; integer n; real r, c; procedure vectRandom( v, ndim, seed); real array v; integer ndim, seed; begin integer i; integer m, a, b, s, r; m := 32768; a := 805; b := 6925; s := seed; for i :=1 step 1 until ndim do begin s := s*a+b; r := entier(s/m); s := s - r*m; v[i] := (entier((s+1)/(m+1)*10000)) / 10000 end end; procedure statAverageStDev(a, dim, avr, std); real array a; integer dim; real avr, std; begin real s; integer i; avr := 0; std := 0; for i := 1 step 1 until dim do begin avr := avr + a[i]; std := std + a[i]*a[i] end; avr := avr / dim; std := (std - dim*avr*avr) / (dim-1); std := sqrt (std ) end ; real procedure statCorrelation(a, b, dim); real array a; real array b; integer dim; begin integer i; real av1, av2, s1, s2, s; statAverageStDev(a, dim, av1, s1); statAverageStDev(b, dim, av2, s2); statCorrelation := 0; s := 0; for i:= 1 step 1 until dim do s := s + a[i]*b[i]; s := s / dim; s := s - av1*av2; statCorrelation := s /s1 / s2 end ; n := 10000; vectRandom(aa, n, n); vectRandom(bb, n, n+1); r := statCorrelation(aa, bb, n); outstring (1,"correlation = "); outreal (1, r ); outstring (1,"\n") end