我想在delphi中创建一个随机数,并将其作为文件名分配给文件。我设法做到了,但当我点击按钮生成数字时,它始终以0开头。任何想法如何解决它
procedure TForm1.Button1Click(Sender: TObject);
var
test:integer;
begin
test:= random(8686868686868);
edit1.Text:= inttostr(test);
end;
end.
答案 0 :(得分:5)
正如user246408所说,你应该使用Randomize
用随机值初始化随机数发生器。此外,如果要将返回的数字限制为正整数,请使用预定义的MaxInt
常量。
返回System.Random
的重载函数integer
具有以下签名:
function Random(const ARange: Integer): Integer;
并返回满足公式X
的整数0 <= X < ARange
。
要防止0值,您可以添加一个常量,例如
procedure TForm17.Button2Click(Sender: TObject);
const
MinRandomValue = 100000;
var
test:integer;
begin
test:= random(MaxInt-MinRandomValue)+MinRandomValue;
edit1.Text:= inttostr(test);
end;
(从MaxInt中减去MinRandomValue以防止溢出)
或者,您可以使用System.Math.RandomRange
test := RandomRange(100000, MaxInt);
记录here
答案 1 :(得分:4)
您的代码有两个问题。
你不打电话给Randomize
,这就是你总是得到零的原因
第一个&#34;随机&#34;值。
您对8686868686868
范围使用的值Random
太大了
超过32位边界,相当于2444814356
。
如果您只需要一个&#34;随机&#34;价值使用
procedure TForm1.Button1Click(Sender: TObject);
var
test:integer;
begin
Randomize;
test:= random($7FFFFFFF);
edit1.Text:= inttostr(test);
end;