Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
60
Task/Statistics-Basic/ANSI-BASIC/statistics-basic.basic
Normal file
60
Task/Statistics-Basic/ANSI-BASIC/statistics-basic.basic
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
100 REM Statistics/Basic
|
||||
110 DECLARE EXTERNAL SUB BasicStats
|
||||
120 CALL BasicStats(100)
|
||||
130 PRINT
|
||||
140 CALL BasicStats(1000)
|
||||
150 PRINT
|
||||
160 CALL BasicStats(10000)
|
||||
170 PRINT
|
||||
180 END
|
||||
190 REM ***
|
||||
200 EXTERNAL SUB BasicStats (SampleSize)
|
||||
210 IF SampleSize < 1 THEN EXIT SUB
|
||||
220 DIM R(1 TO 10000)
|
||||
230 LET MaxSampleSize = UBOUND(R)
|
||||
240 IF SampleSize > MaxSampleSize THEN
|
||||
250 PRINT "Sample size too large"
|
||||
260 STOP
|
||||
270 END IF
|
||||
280 RANDOMIZE
|
||||
290 DIM H(0 TO 9) ! all zero by default
|
||||
300 LET Sum = 0
|
||||
310 LET HSum = 0
|
||||
320 REM Gener!ate 'SampleSize' random numbers in the interval [0, 1)
|
||||
330 REM calculate their Sum
|
||||
340 REM and in which box they will fall when drawing the histogram
|
||||
350 FOR I = 1 TO SampleSize
|
||||
360 LET R(I) = RND
|
||||
370 LET Sum = Sum + R(I)
|
||||
380 LET H(INT(R(I) * 10)) = H(INT(R(I) * 10)) + 1
|
||||
390 NEXT I
|
||||
400 FOR I = 0 TO 9
|
||||
410 LET HSum = HSum + H(I)
|
||||
420 NEXT I
|
||||
430 REM adjust one of the H() values if necessary to ensure HSum = SampleSize
|
||||
440 LET Adj = SampleSize - HSum
|
||||
450 IF Adj <> 0 THEN
|
||||
460 FOR I = 0 TO 9
|
||||
470 LET H(I) = H(I) + Adj
|
||||
480 IF H(I) >= 0 THEN EXIT FOR
|
||||
490 LET H(I) = H(I) - Adj
|
||||
500 NEXT I
|
||||
510 END IF
|
||||
520 LET Mean = Sum / SampleSize
|
||||
530 LET Sum = 0
|
||||
540 REM Now calculate their standard deviation
|
||||
550 FOR I = 1 TO SampleSize
|
||||
560 LET Sum = Sum + (R(I) - Mean) ^ 2
|
||||
570 NEXT I
|
||||
580 LET Sd = SQR(Sum / SampleSize)
|
||||
590 REM Draw a histogram of the data with interval 0.1
|
||||
600 REM If sample size > 500 then normalize histogram to 500
|
||||
610 LET Scale = 1
|
||||
620 IF SampleSize > 500 THEN LET Scale = 500 / SampleSize
|
||||
630 PRINT "Sample size"; SampleSize
|
||||
640 PRINT USING " Mean #.###### SD #.######": Mean, Sd
|
||||
650 FOR I = 0 TO 9
|
||||
660 PRINT USING " #.## : ##### ": I / 10, H(I);
|
||||
670 PRINT REPEAT$("*", ROUND(H(I) * Scale, 0))
|
||||
680 NEXT I
|
||||
690 END SUB
|
||||
Loading…
Add table
Add a link
Reference in a new issue