hedgewars/uRandom.pas
changeset 527 e23490ce1f06
parent 431 79ac59673df3
child 915 33040b7695c0
equal deleted inserted replaced
526:e3689572bb15 527:e23490ce1f06
    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;