为什么执行的结果不一样?

rehuo 2003-05-15 08:18:56
Randomize;
for i:=0 to 3 do
MyName:=MyName+chr(Random(26)+97);
//---------------
for i:=0 to 3 do
begin
Randomize;
MyName:=MyName+chr(Random(26)+97);
end;
这两段代码执行为什么会不一样?
第一段代码得到的myname是由4个随机的字母组成的
而第二段却是由4个相同的字母组成
为什么会这样呢?
...全文
86 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rehuo 2003-05-19
  • 打赏
  • 举报
回复
谢谢了
ehom 2003-05-18
  • 打赏
  • 举报
回复
直接Ctrl+鼠标左键看Randomize的代码,它不过是根据当前时间初始化一个随机种子变量

然后调用Random根据这个变量产生随机数,计算机产生的只能是这种伪随机数

然后再想想时间不过是取到毫秒而已,而你那段循环程序不过几个时钟周期就完成了,自然取到的随机种子变量很可能完全一样,自然根据同一随机种子变量取到的伪随机数序列的第一个数字自然完全一样!
RamjetZhang 2003-05-18
  • 打赏
  • 举报
回复
但是Randomize是跟时间有关的,也不至于重复?
rehuo 2003-05-18
  • 打赏
  • 举报
回复
up
fhuibo 2003-05-15
  • 打赏
  • 举报
回复
Randomize 的帮助说明 什么是随机数发生机制?
giftzhang 2003-05-15
  • 打赏
  • 举报
回复
关注
l_xiaofeng 2003-05-15
  • 打赏
  • 举报
回复
第一个是循环前已经产生一个随机种子,而二个是每次循环都产生随机种子,当然结果不一样。
foreveryday007 2003-05-15
  • 打赏
  • 举报
回复
建議用第 二種方法

for i:=0 to 3 do
begin
Randomize;
MyName:=MyName+chr(Random(26)+97);
end;
cdhuanglei 2003-05-15
  • 打赏
  • 举报
回复
因为你的初始化Randomize放的位置不同!

建议你了解一下:
1、Randomize 的帮助说明
2、什么是随机数发生机制?
3、什么是随机种子?
lincanwen 2003-05-15
  • 打赏
  • 举报
回复
把Randomize放到循环中,执行,那么random得到的数据是一样的。你把Randomize放到循环外执行有什么不好吗?
rehuo 2003-05-15
  • 打赏
  • 举报
回复
to l_xiaofeng(≈流水≈不腐≈)
能不能讲一讲原理或者机制
为什么会这样
麻烦了
现在我是半知半解
rehuo 2003-05-15
  • 打赏
  • 举报
回复
谢谢了,这个地方我老是迷糊
我采用的是第一中方法
因为我要得到的是随机的一个字符串

5,388

社区成员

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

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