如何於 RPG IV 中產生亂數 ? (RANDOM NUMBER GENERATORS)
════════════════════════════════
易 經
乾為天卦 上乾下乾
釋 :偉大的天,為君的道。(旱象逢河之象)
初九:在潛伏時期,應當隱忍時機,不可妄動。
九二:當偉大人物顯現時,給天下帶來生機與希望,有作為的人,
應當擁護與支持,同時本身也應當接近群眾,結合有作為的同志。
九三:在成長時期,羽毛未豐,應當奮發努力,但必須戒慎恐懼,以防災禍。
九四:已經到了躍躍欲試的試鍊階段,決定進退應當把握最有利的時機。
九五:已經到了大展鴻圖的極盛時期,應當選賢與能,賢能也應當支持擁護。
上九:盛極而衰,是大自然的法則,應當警惕與節制。
════════════════════════════════
□ Tips : 如何於 RPG IV 中產生亂數 ? (RANDOM NUMBER GENERATORS)
--------------------------------
1. RPG IV 中有 API CEERAN0 亂數產生器, 此 API
A. 接收種子參數 C0Seed 介於 0 - 2,147,483,646 ; 若設 0 , 則
系統會自動截取系統格林威治時間當種子參數。
B. 輸出 C0RndNbr 亂數, 是 64-bit 雙倍浮點數字,輸出值
介於 0 - 1 間, 若 Call API CEERAN0 有問題, 則傳回 -1。
2. 利用迴圈及 %DecH Built-In 函數, 將C0RndNbr 亂數輸出值轉換成
PACKED 數字
--------------------------------
QRPGLESRC -- RANDOM RPGLE
CRTBNDPGM PGM(RANDOM) DFTACTGRP(*NO)
D C0Seed S 5I 0 Inz(0)
D C0RndNbr S 8F
**-- Random Number Conversion: ---------------------------------
D RndNbr S 10I 0
D MaxNbr S 10I 0 Inz(9000000)
D MinNbr S 10I 0 Inz(1000000)
D TempChr S 20
**
**================================================================
**
C DoU RndNbr >= MinNbr
**
C CallB 'CEERAN0'
C Parm C0Seed
C Parm C0RndNbr
C Parm *OMIT
**
C Eval RndNbr = %DecH(C0RndNbr:30:29) * MaxNbr
C EndDo
**
C Eval TempChr = %CHAR(RndNbr)
C TempChr Dsply
**
C Return
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期二, 10月 31, 2023
2000-05-12 如何於 RPG IV 中產生亂數 ? (RANDOM NUMBER GENERATORS)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言