如何在Delphi中生成0到1之间均匀分布的随机数

How generate uniformly distributed random numbers between 0 and 1, in Delphi

在 Matlab 中这个函数

r = rand(5)

结果:

r =

0.8147    0.0975    0.1576    0.1419    0.6557
0.9058    0.2785    0.9706    0.4218    0.0357
0.1270    0.5469    0.9572    0.9157    0.8491
0.9134    0.9575    0.4854    0.7922    0.9340
0.6324    0.9649    0.8003    0.9595    0.6787

用于生成0到1之间均匀分布的随机数的5×5矩阵。

Delphi中的等效函数是什么?

没有可生成矩阵或任何其他随机数集合的标准 Delphi RTL 函数。

但是有一个 Random 函数可以用来生成一个随机数。您只需根据需要多次调用它来生成数字以初始化您需要的任何随机数集合。

在 Delphi 中,5x5 矩阵可以用多种方式表示,其中一种可能是简单的二维数组,可以在简单的循环中初始化:

var
  x, y: Integer;
  r: array[0..4, 0..4] of Double;
begin
  for x := 0 to 4 do
    for y := 0 to 4 do
      r[x][y] := Random;

  // etc to work with the matrix (array)...

end;

与大多数编程 languages/runtimes 一样,默认情况下,每次 运行 程序都会产生相同的随机数序列。要更改 "seed" 并获得不同的序列,您可以调用 Randomize 或设置 RandSeed 变量(对于 RandSeed 的给定值,您将获得相同的数字序列).

Random 函数 returns 一个介于 0.0 和 1.0 之间的随机值,从均匀分布中采样。

Delphi 使用的伪随机数生成器 (PRNG) 是一个简单的线性同余生成器,非常基础,不像 PRNG 那样具有很好的特性。 Matlab 使用更好的 PRNG,它的默认值是 Mersenne Twister。如果伪随机数的质量对您很重要,那么您需要选择一种特定的算法并自己实现它或在合适的库中找到它,其中有很多。