var rnd : TRandomGenerator;
IntVec :
TVecInt;
begin
if Seed = -1
then Seed := aRound(Random*High(Cardinal));
rnd := TRandomGenerator.Create;
IntVec := TVecInt.Create;
try
IntVec.Size(Results.Length, prInt32);
rnd.StreamCount := 1;
rnd.Init(rgMRG32k3a,
Seed);
rnd.Stream[0].RandomBinomial(IntVec,an,p);
Results.Copy(IntVec);
finally
rnd.Free;
IntVec.Free;
end
end;