47 lines
930 B
Plaintext
47 lines
930 B
Plaintext
Const As Integer mod_ = 1e9
|
|
Dim Shared As Integer state(0 To 55)
|
|
Dim Shared As Integer sk = 0, sj = 0
|
|
|
|
Declare Function subrand() As Integer
|
|
|
|
Sub subrandSeed (p1 As Integer)
|
|
Dim As Integer i, j, p2
|
|
state(0) = p1 Mod mod_
|
|
p2 = 1
|
|
j = 21
|
|
|
|
For i = 1 To 54
|
|
If j >= 55 Then j -= 55
|
|
state(j) = p2
|
|
p2 = p1 - p2
|
|
If p2 < 0 Then p2 += mod_
|
|
p1 = state(j)
|
|
j += 21
|
|
Next
|
|
sk = 0
|
|
sj = 24
|
|
For i = 1 To 165
|
|
subrand()
|
|
Next
|
|
End Sub
|
|
|
|
Function subrand() As Integer
|
|
If sk = sj Then
|
|
subrandSeed(0)
|
|
Else
|
|
If sk = 0 Then sk = 54 Else sk -= 1
|
|
If sj = 0 Then sj = 54 Else sj -= 1
|
|
Dim As Integer x = state(sk) - state(sj)
|
|
If x < 0 Then x += mod_
|
|
state(sk) = x
|
|
Return x
|
|
End If
|
|
End Function
|
|
|
|
subrandSeed(292929)
|
|
For i As Integer = 0 To 9
|
|
Print Using "r[###] = &"; i+220; subrand()
|
|
Next i
|
|
|
|
Sleep
|