Version with a function to convert array to string as described in Articleby qbguy (no login)DECLARE FUNCTION ARRAY2STRING$ (A!()) DIM A(0 TO 999) FOR I = 0 TO 999 READ A(I) NEXT X$ = ARRAY2STRING$(A()) K1$ = LEFT$(X$, 1) K2$ = LEFT$(X$, 1) FOR I = 1 TO LEN(X$) IF MID$(X$, I, 1) <> K1$ THEN K2$ = MID$(X$, I, 1) NEXT IF K1$ = K2$ THEN PRINT "STRING MUST HAVE 2 DIFFERENT TYPES": STOP FOR I = 1 TO LEN(X$) IF MID$(X$, I, 1) <> K1$ AND MID$(X$, I, 1) <> K2$ THEN PRINT "STRING MAY ONLY HAVE 2 TYPES": STOP END IF NEXT N1 = 0 N2 = 0 RUNS = 1 FOR I = 1 TO LEN(X$) - 1 IF MID$(X$, I, 1) = K1$ THEN N1 = N1 + 1 ELSE N2 = N2 + 1 IF MID$(X$, I + 1, 1) <> MID$(X$, I, 1) THEN RUNS = RUNS + 1 NEXT IF MID$(X$, LEN(X$), 1) = K1$ THEN N1 = N1 + 1 ELSE N2 = N2 + 1 IF N1 < 8 OR N2 < 8 THEN PRINT "MUST HAVE 8 OR MORE OF EACH TYPE FOR MEANINGFUL ANALYSIS": STOP EXPECTEDRUNS = 1 + ((2! * N1 * N2) / (N1 + N2)) VARN = (2! * N1 * N2) * (2! * N1 * N2 - N1 - N2) VARD = (N1 + N2) * (N1 + N2) * (N1 + N2 - 1) VAR = VARN / VARD Z = (R - EXPECTEDRUNS) / SQR(VAR) IF Z < -2.58 OR Z > 2.58 THEN PRINT "STRONG EVIDENCE (1%) PATTERN IS NOT RANDOM:" IF Z < -2.58 THEN PRINT "TOO FEW RUNS" ELSE PRINT "TOO MANY RUNS" PRINT "EXPECTED RUNS:"; EXPECTEDRUNS PRINT "ACTUAL RUNS:"; RUNS END IF DATA 75, 90, 55, 24, 80, 89, 90, 43, 99, 46 DATA 53, 96, 6, 59, 9, 3, 96, 83, 48, 40 DATA 93, 49, 79, 70, 5, 13, 41, 62, 36, 96 DATA 12, 76, 97, 46, 45, 80, 42, 58, 67, 12 DATA 21, 40, 82, 73, 82, 94, 19, 73, 62, 76 DATA 61, 25, 8, 71, 2, 18, 11, 19, 55, 33 DATA 12, 5, 11, 40, 52, 55, 37, 89, 48, 49 DATA 92, 100, 57, 71, 80, 100, 64, 46, 37, 2 DATA 23, 64, 54, 70, 15, 55, 31, 15, 48, 20 DATA 57, 77, 74, 77, 44, 34, 80, 43, 33, 65 DATA 36, 14, 42, 39, 21, 47, 15, 84, 45, 76 DATA 21, 43, 93, 69, 80, 10, 82, 55, 74, 42 DATA 23, 3, 54, 6, 68, 65, 86, 5, 17, 71 DATA 52, 5, 32, 83, 50, 76, 28, 15, 90, 17 DATA 59, 40, 30, 45, 1, 84, 54, 79, 32, 61 DATA 70, 24, 17, 49, 97, 70, 96, 17, 36, 28 DATA 12, 39, 94, 21, 46, 72, 14, 85, 18, 46 DATA 69, 90, 6, 44, 4, 67, 81, 58, 47, 47 DATA 71, 82, 74, 96, 3, 59, 18, 29, 91, 80 DATA 98, 21, 6, 64, 26, 60, 21, 99, 92, 53 DATA 99, 73, 9, 77, 92, 39, 55, 65, 37, 65 DATA 54, 89, 6, 41, 96, 39, 27, 83, 14, 89 DATA 93, 34, 22, 81, 55, 18, 62, 49, 4, 59 DATA 24, 27, 55, 42, 16, 2, 3, 7, 95, 44 DATA 97, 69, 11, 12, 32, 9, 13, 9, 100, 24 DATA 87, 59, 69, 27, 83, 11, 28, 37, 69, 51 DATA 26, 56, 82, 21, 24, 61, 91, 67, 74, 79 DATA 21, 1, 87, 81, 36, 41, 51, 75, 50, 46 DATA 84, 57, 23, 22, 100, 2, 62, 69, 26, 29 DATA 93, 44, 39, 20, 5, 89, 17, 67, 95, 39 DATA 53, 42, 99, 4, 98, 29, 28, 76, 47, 96 DATA 21, 52, 45, 1, 70, 69, 49, 16, 57, 59 DATA 47, 12, 48, 72, 81, 87, 90, 29, 34, 75 DATA 37, 53, 40, 97, 22, 15, 77, 10, 52, 9 DATA 2, 84, 74, 13, 80, 46, 28, 67, 73, 23 DATA 63, 11, 58, 51, 84, 63, 8, 29, 55, 64 DATA 9, 39, 35, 38, 3, 23, 97, 61, 11, 79 DATA 9, 13, 82, 56, 7, 69, 2, 67, 30, 34 DATA 24, 81, 37, 44, 19, 30, 41, 86, 2, 92 DATA 96, 94, 68, 76, 46, 75, 42, 53, 82, 75 DATA 23, 6, 11, 88, 45, 16, 91, 22, 3, 59 DATA 23, 46, 21, 62, 1, 94, 98, 7, 26, 77 DATA 70, 2, 62, 7, 35, 67, 42, 5, 30, 41 DATA 21, 21, 70, 84, 88, 4, 42, 24, 82, 72 DATA 59, 78, 91, 53, 6, 5, 83, 75, 10, 61 DATA 36, 1, 61, 32, 11, 97, 70, 85, 41, 57 DATA 24, 43, 10, 66, 52, 60, 30, 77, 14, 39 DATA 51, 61, 75, 65, 22, 16, 38, 85, 89, 57 DATA 55, 30, 49, 78, 97, 52, 34, 80, 48, 14 DATA 23, 29, 52, 51, 11, 65, 94, 56, 32, 70 DATA 28, 29, 55, 71, 19, 81, 99, 84, 38, 71 DATA 77, 73, 87, 38, 89, 30, 5, 12, 87, 14 DATA 72, 81, 86, 38, 14, 13, 33, 98, 21, 70 DATA 60, 88, 74, 47, 2, 86, 45, 44, 1, 32 DATA 96, 69, 8, 68, 28, 1, 94, 41, 92, 68 DATA 61, 36, 43, 39, 44, 84, 72, 29, 84, 82 DATA 38, 91, 57, 100, 6, 56, 96, 6, 26, 20 DATA 100, 53, 22, 46, 32, 100, 64, 48, 27, 87 DATA 12, 72, 16, 86, 67, 3, 73, 23, 65, 2 DATA 25, 66, 30, 8, 70, 8, 87, 13, 69, 26 DATA 49, 84, 86, 31, 55, 1, 97, 17, 70, 30 DATA 30, 26, 51, 71, 10, 65, 34, 20, 50, 65 DATA 30, 66, 50, 95, 4, 24, 45, 91, 9, 95 DATA 65, 54, 52, 94, 84, 92, 16, 81, 38, 78 DATA 63, 83, 69, 98, 23, 20, 89, 65, 40, 96 DATA 37, 59, 71, 34, 71, 38, 13, 95, 11, 42 DATA 40, 19, 10, 72, 52, 24, 71, 50, 86, 96 DATA 21, 53, 49, 65, 26, 45, 58, 91, 27, 26 DATA 85, 18, 50, 49, 74, 25, 59, 39, 32, 66 DATA 90, 85, 6, 27, 63, 6, 94, 29, 33, 73 DATA 95, 64, 17, 44, 4, 5, 29, 93, 82, 76 DATA 63, 22, 95, 86, 71, 89, 85, 80, 100, 2 DATA 59, 67, 89, 86, 59, 87, 20, 86, 13, 54 DATA 100, 65, 57, 18, 68, 37, 41, 27, 47, 41 DATA 100, 58, 71, 63, 55, 40, 96, 73, 42, 39 DATA 45, 64, 78, 15, 66, 89, 39, 86, 84, 27 DATA 77, 24, 44, 16, 81, 20, 41, 53, 23, 86 DATA 29, 50, 52, 13, 1, 5, 74, 26, 61, 92 DATA 74, 48, 65, 15, 84, 37, 25, 83, 29, 64 DATA 100, 57, 40, 48, 67, 89, 8, 51, 50, 64 DATA 94, 17, 20, 2, 45, 89, 89, 30, 89, 15 DATA 32, 90, 36, 53, 92, 15, 31, 91, 25, 89 DATA 59, 85, 57, 89, 70, 44, 82, 36, 80, 74 DATA 32, 45, 34, 46, 61, 100, 4, 40, 96, 7 DATA 35, 31, 13, 59, 70, 69, 87, 5, 6, 75 DATA 88, 18, 96, 68, 67, 38, 28, 39, 7, 7 DATA 80, 28, 88, 78, 12, 96, 69, 4, 70, 53 DATA 29, 63, 71, 40, 42, 14, 43, 14, 89, 30 DATA 20, 12, 92, 90, 56, 100, 28, 28, 89, 38 DATA 40, 64, 36, 83, 92, 65, 85, 60, 84, 58 DATA 58, 53, 8, 80, 85, 64, 4, 70, 55, 25 DATA 75, 70, 31, 42, 23, 59, 23, 74, 99, 55 DATA 17, 95, 88, 62, 14, 94, 67, 92, 12, 44 DATA 23, 45, 99, 21, 41, 56, 42, 90, 29, 65 DATA 1, 12, 57, 11, 83, 70, 44, 2, 69, 38 DATA 71, 4, 29, 77, 20, 55, 40, 95, 10, 32 DATA 3, 31, 11, 38, 5, 59, 77, 47, 59, 73 DATA 40, 39, 15, 90, 12, 46, 56, 79, 4, 49 DATA 46, 86, 17, 99, 9, 17, 65, 21, 67, 93 DATA 88, 64, 55, 69, 50, 39, 68, 42, 73, 53 FUNCTION ARRAY2STRING$ (A()) SUM = 0 NUMELEMENTS = UBOUND(A) - LBOUND(A) + 1 FOR I = LBOUND(A) TO UBOUND(A) SUM = SUM + A(I) NEXT AVG = SUM / NUMELEMENTS FOR I = LBOUND(A) TO UBOUND(A) IF A(I) > AVG THEN I$ = I$ + "H" ELSE I$ = I$ + "L" NEXT ARRAY2STRING$ = I$ END FUNCTION from IP address 75.9.218.72 |