equal
deleted
inserted
replaced
18 |
18 |
19 unit uRandom; |
19 unit uRandom; |
20 interface |
20 interface |
21 uses uFloat; |
21 uses uFloat; |
22 {$INCLUDE options.inc} |
22 {$INCLUDE options.inc} |
|
23 {$INCLUDE proto.inc} |
23 |
24 |
24 procedure SetRandomSeed(Seed: shortstring); |
25 procedure SetRandomSeed(Seed: shortstring); |
25 function GetRandom: hwFloat; overload; |
26 function GetRandom: hwFloat; overload; |
26 function GetRandom(m: LongWord): LongWord; overload; |
27 function GetRandom(m: LongWord): LongWord; overload; |
27 |
28 |
45 begin |
46 begin |
46 n:= 54; |
47 n:= 54; |
47 |
48 |
48 if Length(Seed) > 54 then Seed:= copy(Seed, 1, 54); // not 55 to ensure we have odd numbers in cirbuf |
49 if Length(Seed) > 54 then Seed:= copy(Seed, 1, 54); // not 55 to ensure we have odd numbers in cirbuf |
49 |
50 |
50 for i:= 1 to Length(Seed) do |
51 for i:= 0 to Pred(Length(Seed)) do |
51 cirbuf[i - 1]:= byte(Seed[i]) * (i * 2 + 7); |
52 cirbuf[i]:= byte(Seed[i + 1]); |
52 |
53 |
53 for i:= Length(Seed) to 54 do |
54 for i:= Length(Seed) to 54 do |
54 cirbuf[i]:= i * 7 + 1; |
55 cirbuf[i]:= $A98765 + (cNetProtoVersion * 2); // odd number |
55 |
56 |
56 for i:= 0 to 1023 do GetNext |
57 for i:= 0 to 1023 do GetNext |
57 end; |
58 end; |
58 |
59 |
59 function GetRandom: hwFloat; |
60 function GetRandom: hwFloat; |