随机数问韪!分数100分在这里(http://www.delphibbs.com/delphibbs/dispq.asp?lid=3625982) ( 积分:

  • 主题发起人 主题发起人 hying95
  • 开始时间 开始时间
H

hying95

Unregistered / Unconfirmed
GUEST, unregistred user!
随机数问韪!分数100分在这里(http://www.delphibbs.com/delphibbs/dispq.asp?lid=3625982) ( 积分: 0 )<br />代码如下:放在非技术韪那里,没人回答,就放这儿希望能有人回答!
procedure TForm1.Button1Click(Sender: TObject);
var
i, j : integer;
K: Array [1..160] of integer;
NumCount: integer;
begin
memo1.Clear;
for i := 1 to 160 do
K := i;
NumCount := 49;
Randomize;
while memo1.Lines.Count&lt;7 do
begin
j:= random(NumCount);
if length(inttostr(K[j]))&gt;2 then continue;//如果没有这行会出现大于49(13972792);为什么会出现这种情况?
memo1.Lines.Add(inttostr(K[j]));
K[j] := K[NumCount-1];
NumCount := NumCount-1;
end;
end;
为什么会出现大于49的情况(都是13972792)?
第二,连续按这个按纽会出如下错误,运行终止!
工程Project2.exe检测到错误类EAccessViolation错误信息:存取地址00403E94,违例了发生在模块Project2.exe中,读 在地址00000028里,进程中止。
 
测试了你的代码

1,去掉那一行,没有出现大于49的情况

2,如果点的慢,不会出现错误!可能是因为过错没执行完的原因吧??(我猜想的)
 
RandSeed=49
 
会出现大于49的情况,我试过好多次了,在两台机上试的!
 
RandSeed:=49;
Randomize;
你没有设种子
 
我查出来了,
j:= random(NumCount);可能是0
问题就在这里 你定义 K: Array [1..160] of integer;
没有K[0]
 
哦,有道理,我的都是胡说的
 
to bjyplbx
这个错误提示还是有!
工程Project2.exe检测到错误类EAccessViolation错误信息:存取地址00403E94,违例了发生在模块Project2.exe中,读 在地址00000028里,进程中止。
 
大于49的情况还有,这次变成(13980712)!
 
XP系统,D7
 
没人理我了!
 
procedure TForm1.Button1Click(Sender: TObject);
var
i, j : integer;
K: Array [1..160] of integer;
NumCount: integer;
begin
memo1.Clear;
for i := 1 to 160 do
K := i;
NumCount := 49;
Randomize;
while memo1.Lines.Count&lt;7 do
begin
j:=1+random(NumCount);//这里出了问题,random(NumCount)有可能为0,造成K[j]越界.
// if length(inttostr(K[j]))&gt;2 then continue;//如果没有这行会出现大于49(13972792);为什么会出现这种情况?
memo1.Lines.Add(inttostr(K[j]));
K[j] := K[NumCount-1];
NumCount := NumCount-1;
end;
end;
 
隐士山人,请去http://www.delphibbs.com/delphibbs/dispq.asp?lid=3625982领分!现在出去一下,等下回来给你加上去!
 
隐士山人已给你加分了!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
843
import
I
后退
顶部