数组打乱顺序(100)

  • 主题发起人 主题发起人 Ekin
  • 开始时间 开始时间
E

Ekin

Unregistered / Unconfirmed
GUEST, unregistred user!
比如开始时间 09:00 间隔时间3分钟,得到的一串时间即为 09:00,09:03,09:06,09:09 ...依次类推;一个StringGrid有N行,现在要将按上面规律产生的时间打乱顺序随机填到StringGrid的每一行中,有什么效率高点的办法啊!?
 
用Random(n)来打乱顺序插入到stringgrid中~~
 
随机选取的话会有重复的啊!时间不能重复
 
选了的做个标记,或清除
 
在生成数组时, 随机取得索引;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 即可
 
先顺序得到时间,然后用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;
 
up一下,实在不行再找我~
 
多人接受答案了。
 
后退
顶部