关于不重复随机取值的问题
有一字符串mystr,比如其值为"abcdefghijklmnopqrstuvwxyz",我现在希望从中随机抽出5个不重复的字符,组成一个新的字符串num,不知如何以最高的效率来执行.下面是我写的代码,总觉得执行效率不够,因为temp不停地重新分配其值,可能影响速度.
var
k:integer;
mystr,temp:,num:string;
begin
mystr:='abcdefghijklmnopqrstuvwxyz';
temp:=mystr;
num:=stringofchar(' ',5);
randomize;
for k:=1 to 5 do
begin
n:=random(length(temp))+1;
num[k]:=temp[n];
delete(temp,n,1);
end;
end;