38 lines
680 B
Plaintext
38 lines
680 B
Plaintext
Procedure ms_LCG(seed.q = -1)
|
|
Static state.q
|
|
If seed >= 0
|
|
state = seed
|
|
Else
|
|
state = (state * 214013 + 2531011) % (1 << 31)
|
|
ProcedureReturn state >> 16
|
|
EndIf
|
|
EndProcedure
|
|
|
|
Procedure.q bsd_LCG(seed.q = -1)
|
|
Static state.q
|
|
If seed >= 0
|
|
state = seed
|
|
Else
|
|
state = (state * 1103515245 + 12345) % (1 << 31)
|
|
ProcedureReturn state
|
|
EndIf
|
|
EndProcedure
|
|
|
|
If OpenConsole()
|
|
Define i
|
|
PrintN("BSD (seed = 1)")
|
|
bsd_LCG(1)
|
|
For i = 1 To 5
|
|
PrintN(Str(bsd_LCG()))
|
|
Next
|
|
|
|
PrintN(#CRLF$ + "MS (seed = 1)")
|
|
ms_LCG(1)
|
|
For i = 1 To 5
|
|
PrintN(Str(ms_LCG()))
|
|
Next
|
|
|
|
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
|
CloseConsole()
|
|
EndIf
|