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

时间:2016-10-23 06:35:34

标签: delphi random uniform-distribution

在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中的等效函数是什么?

1 个答案:

答案 0 :(得分:5)

没有标准的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;

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

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

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