在delphi中生成随机数

时间:2015-12-27 15:42:32

标签: delphi random

我想在delphi中创建一个随机数,并将其作为文件名分配给文件。我设法做到了,但当我点击按钮生成数字时,它始终以0开头。任何想法如何解决它

procedure TForm1.Button1Click(Sender: TObject);
var
test:integer;

begin
test:= random(8686868686868);

edit1.Text:= inttostr(test);
end;

end.

2 个答案:

答案 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)

您的代码有两个问题。

  1. 你不打电话给Randomize,这就是你总是得到零的原因 第一个&#34;随机&#34;值。

  2. 您对8686868686868范围使用的值Random太大了 超过32位边界,相当于2444814356

  3. 如果您只需要一个&#34;随机&#34;价值使用

    procedure TForm1.Button1Click(Sender: TObject);
    var
      test:integer;
    
    begin
      Randomize;
      test:= random($7FFFFFFF);
    
      edit1.Text:= inttostr(test);
    end;