! ! Author : Peter Alan Burton ! Purpose: Illustrate a random number generator ! Timing : PII 400/WinNT/SQR 4; 100000 unique numbers in < 5 seconds ! Begin-Setup Declare-Variable Date $Start $Stop End-Declare No-Formfeed End-Setup Begin-Report Let $Start = DateNow() Do InitializeRandom() While #Loop < 100000 Do GetRandom(#RandomValue) Print #RandomValue (1,1) Edit 9.99999999999999 Next-Listing Add 1 To #Loop End-While Let $Stop = DateNow() Let #Elapsed = DateDiff($Stop, $Start, 'second') Show 'Generated ' #Loop edit 88888888 ' random numbers in ' #Elapsed edit 88888.88888 ' seconds' End-Report Begin-Procedure InitializeRandom() Move '214013' To #_Random_C1 Move '2531011' To #_Random_C2 Move '2147483647' To #_Random_D Move '1' To #_Random_H ! Change to start a different chain End-Procedure Begin-Procedure GetRandom(:#Value) Let #_Random_H = Mod(#_Random_H * #_Random_C1 + #_Random_C2, #_Random_D) Let #Value = #_Random_H / #_Random_D End-Procedure