OPENCOBOLのRANDOM関数が変なのか?
これは、要するに乱数を1000回発生させてその平均をとっているはずのプログラムなんだが。。。
なぜか平均が必ず0.3あたりになる。 何が間違っているのだろうか。。桁の扱いとかいまいちちゃんとわかってないからなあ。
IDENTIFICATION DIVISION. PROGRAM-ID. CONBOLER. DATA DIVISION. WORKING-STORAGE SECTION. 01 CURRENT-TIME. 05 FILLER PIC 9(4). 05 CT-SECONDS PIC 9(2). 05 CT-HUNDREDTHS-OF-SECS PIC 9(2). 01 T PIC 9(5). 01 CNTI PIC 9(5). 01 D PIC 9(1)V9(5). 01 N PIC 9(1)V9(5). 01 A PIC 9(4)V9(5) VALUE 0. PROCEDURE DIVISION. ACCEPT CURRENT-TIME FROM TIME. DISPLAY 'TIME = :' CURRENT-TIME. COMPUTE T = CT-SECONDS * 60 + CT-HUNDREDTHS-OF-SECS. DISPLAY 'SEED: ' T. MOVE FUNCTION RANDOM(T) TO D. PERFORM VARYING CNTI FROM 1 BY 1 UNTIL CNTI >= 1000 MOVE FUNCTION RANDOM TO N COMPUTE A = A + N END-PERFORM. COMPUTE A = A / 1000. DISPLAY'===============' DISPLAY A. STOP RUN.