我想在delphi中创建一个随机数,并将其作为文件名分配给文件.我设法做到了,但当我点击按钮生成数字时,它始终以0开头.任何想法如何解决它
procedure TForm1.Button1Click(Sender: TObject);
var
test:integer;
begin
test:= random(8686868686868);
edit1.Text:= inttostr(test);
end;
end.
Run Code Online (Sandbox Code Playgroud)
您的代码有两个问题。
您不调用Randomize,这就是为什么您总是将零作为第一个“随机”值。
您8686868686868对Random范围使用了太大的值,它超过了 32 位边界并等效于2444814356.
如果您只需要一个“随机”值,请使用
procedure TForm1.Button1Click(Sender: TObject);
var
test:integer;
begin
Randomize;
test:= random($7FFFFFFF);
edit1.Text:= inttostr(test);
end;
Run Code Online (Sandbox Code Playgroud)
正如user246408所说,您应该使用Randomize随机值初始化随机数生成器.此外,如果要将返回的数字限制为正整数,请使用预定义的MaxInt常量.
System.Random返回的重载函数integer具有以下签名:
function Random(const ARange: Integer): Integer;
Run Code Online (Sandbox Code Playgroud)
并返回一个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;
Run Code Online (Sandbox Code Playgroud)
(从MaxInt中减去MinRandomValue以防止溢出)
或者,您可以使用System.Math.RandomRange
test := RandomRange(100000, MaxInt);
Run Code Online (Sandbox Code Playgroud)
记录在这里
| 归档时间: |
|
| 查看次数: |
5634 次 |
| 最近记录: |