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

SHd*_*Com 1 delphi random uniform-distribution

在Matlab中这个功能

r = rand(5)
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

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

Delphi中的等效函数是什么?

Del*_*ics 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;
Run Code Online (Sandbox Code Playgroud)

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

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

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