E Ekin Unregistered / Unconfirmed GUEST, unregistred user! 2009-07-03 #1 比如开始时间 09:00 间隔时间3分钟,得到的一串时间即为 09:00,09:03,09:06,09:09 ...依次类推;一个StringGrid有N行,现在要将按上面规律产生的时间打乱顺序随机填到StringGrid的每一行中,有什么效率高点的办法啊!?
比如开始时间 09:00 间隔时间3分钟,得到的一串时间即为 09:00,09:03,09:06,09:09 ...依次类推;一个StringGrid有N行,现在要将按上面规律产生的时间打乱顺序随机填到StringGrid的每一行中,有什么效率高点的办法啊!?
D de410 Unregistered / Unconfirmed GUEST, unregistred user! 2009-07-03 #2 用Random来打乱顺序插入到stringgrid中~~
L liuls Unregistered / Unconfirmed GUEST, unregistred user! 2009-07-03 #5 在生成数组时, 随机取得索引;var FStrArr: array of string;procedure AddTimeStr(const ATimeStr: string);var iIndex: Integer; iLen: Integer;begin iLen := Length(FStrArr); Inc(iLen); SetLength(FStrArr, iLen); iIndex := Math.RandomRange(0, iLen -1); if iIndex <> iLen -1 then begin Move(FStrArr[iIndex], FStrArr[iIndex + 1], (iLen - iIndex) * SizeOf(string)); end; FStrArr[iIndex] := ATimeStr;end;// 最后输出 FStrArr 即可
在生成数组时, 随机取得索引;var FStrArr: array of string;procedure AddTimeStr(const ATimeStr: string);var iIndex: Integer; iLen: Integer;begin iLen := Length(FStrArr); Inc(iLen); SetLength(FStrArr, iLen); iIndex := Math.RandomRange(0, iLen -1); if iIndex <> iLen -1 then begin Move(FStrArr[iIndex], FStrArr[iIndex + 1], (iLen - iIndex) * SizeOf(string)); end; FStrArr[iIndex] := ATimeStr;end;// 最后输出 FStrArr 即可
T tbytby Unregistered / Unconfirmed GUEST, unregistred user! 2009-07-09 #6 先顺序得到时间,然后用random生成要交换的时间所对应的位置并进行交换重复数千次就必然是乱序的了比如:var I,J,K:Integer;begin Randomize(); for K := 1 to 5000 do begin I:=Random(100)+1; J:=Random(100)+1; ......(交换第I和第J位的时间) end;end;
先顺序得到时间,然后用random生成要交换的时间所对应的位置并进行交换重复数千次就必然是乱序的了比如:var I,J,K:Integer;begin Randomize(); for K := 1 to 5000 do begin I:=Random(100)+1; J:=Random(100)+1; ......(交换第I和第J位的时间) end;end;