Ненужное потёр.
brl.random
Global rnd_state=$1234
Const RND_A=48271,RND_M=2147483647,RND_Q=44488,RND_R=3399
Function RndFloat#()
rnd_state=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
If rnd_state<0 rnd_state=rnd_state+RND_M
Return (rnd_state & $ffffff0) / 268435456# 'divide by 2^28
End Function
Function RndDouble!()
Const TWO27! = 134217728.0
Const TWO29! = 536870912.0
rnd_state=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
If rnd_state<0 rnd_state=rnd_state+RND_M
Local r_hi! = rnd_state & $1ffffffc
rnd_state=RND_A*(rnd_state Mod RND_Q)-RND_R*(rnd_state/RND_Q)
If rnd_state<0 rnd_state=rnd_state+RND_M
Local r_lo! = rnd_state & $1ffffff8
Return (r_hi + r_lo/TWO27)/TWO29
End Function
Function Rnd!( min_value!=1,max_value!=0 )
If max_value>min_value Return RndDouble()*(max_value-min_value)+min_value
Return RndDouble()*(min_value-max_value)+max_value
End Function
Function Rand( min_value,max_value=1 )
Local range=max_value-min_value
If range>0 Return Int( RndDouble()*(1+range) )+min_value
Return Int( RndDouble()*(1-range) )+max_value
End Function
Function SeedRnd( seed )
rnd_state=seed & $7fffffff
If rnd_state=0 Or rnd_state=RND_M rnd_state=$1234
End Function
Function RndSeed()
Return rnd_state
End Function