procedure RandomData(AMax, ACount: Integer;
RList: TStrings);
var
FAllDatas, FDatas: array of Integer;
i, k: Integer;
procedure InitAllDatas();
var
j: Integer;
begin
//这里用从 0 到 AMax - 1 来初始化待采样的数组
//也可以用其它的数据初始化这个数组,只要重新改写这个函数就是了
for j := 0 to AMax - 1do
FAllDatas[j] := j;
end;
begin
Randomize;
SetLength(FAllDatas, AMax);
InitAllDatas();//初始化采样数组
SetLength(FDatas, ACount);
for i := 0 to ACount - 1do
begin
k := Random(AMax - i);
FDatas := FAllDatas[k];
if k <> AMax - i then
FAllDatas[k] := FAllDatas[AMax - i];
end;
//输出,这里采用TStrings来记录输出数组,主要是为了使用方便
RList.Clear;
for i := 0 to ACount - 1do
RList.Add(IntToStr(FDatas))
end;
AMax 是最大数(按照你的要求,AMax =100)
ACount 是个数(按照你的要求,ACount =50)
RList就是你想要的
要生成你要的数组,只需要RandomData(100, 50, RList)