29 lines
610 B
ObjectPascal
29 lines
610 B
ObjectPascal
function bsdRand(seed: integer): sequence of integer;
|
|
begin
|
|
while true do
|
|
begin
|
|
seed := (1_103_515_245 * seed + 12_345) and $7fffffff;
|
|
yield seed
|
|
end;
|
|
end;
|
|
|
|
function msvcrtRand(seed: integer): sequence of integer;
|
|
begin
|
|
while true do
|
|
begin
|
|
seed := (214_013 * seed + 2_531_011) and $7fffffff;
|
|
yield seed shr 16
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
'BSD with seed = 1'.println;
|
|
var iter1 := bsdRand(1);
|
|
foreach var val in iter1.Take(10) do
|
|
println(val);
|
|
println;
|
|
'Microsoft with seed = 0'.Println;
|
|
var iter2 := msvcrtRand(0);
|
|
foreach var val in iter2.Take(10) do
|
|
println(val);
|
|
end.
|