产生随机时间!

256m 2002-05-17 02:45:56
怎么产生两时间之间的随机时间?
例如:产生07:58:28 与 08:03:57 之间随机时间。07:59:01算合法!
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2002-05-17
  • 打赏
  • 举报
回复
你可以按以下步骤来取到所需的随机时间:
1。将hh:mm:ss(时分秒)格式表示的时间转换为仅用s(秒)表示的时间:
s=(hh*24+mm)*60+ss
2。利用上述公式,将07:58:28 与 08:03:57都转换为秒表示的时间:s1,s2
3。你要的随即时间,用秒表示的,为: s:=s1+random(s2+1)
4。你要的用hh:mm:ss(时分秒)的随即时间为:
ss:=s mod 60;
mm:=(s-ss) div 60
hh:=(s-ss-mm*60) div 24
5。将ss,mm,hh三各个数,用inttostr函数转换成字符串,再中间插入冒号就完成了整个。

[注]这是苯办法,在windows的API中,可能有将hh:mm:ss(时分秒)格式时间转换为s(秒)时间,或进行反向转换,的现成函数可用。Delphi中,有关日期(date)和时间(time)也有许多函数,你可用help去查,看是否有更方便的工具。

MSHawk 2002-05-17
  • 打赏
  • 举报
回复
var
D1, D2: TDateTime;
R: Real;
begin
D1 := StrToDateTime('07:58:28');
D2 := StrToDateTime('08:03:57');
R := 0;
while (R < D1) or (R > D2) do
R := random(10000) / 10000;
end;
王集鹄 2002-05-17
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
vStartTime, vEndTime: TTime;
T: Real;
R: Real;
begin
Randomize;
vStartTime := StrToTime('07:58:28');
vEndTime := StrToTime('08:03:57');
T := vEndTime - vStartTime;
R := Random;
while R > T do R := R - T;
Caption := TimeToStr(vStartTime + R);
end;
rockynmc 2002-05-17
  • 打赏
  • 举报
回复
进行运算呀!把你的要求作为相应范围。
随机数的产生办法,可以根据系统时间作随机总子数,产生一随机数后与你的范围做相应的运算,这个运算问题就不用我说了吧。

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧