5

我们如何在浮点数(在delphi xe3中)的范围之间生成随机数?

例如,将 之间的数字随机化[0.10 to 0.90]。我需要给出如下结果:

[ 0.20 , 0.32 , 0.10 , 0.50 ]

感谢您的解决方案....

4

4 回答 4

6

另一种选择是使用RandomRange(returns: AFrom <= r < ATo) 如下:

RandomRange(10, 90 + 1) / 100

或者

RandomRange(10, 90 + 1) * 0.01

将返回 0.10 到 0.90 范围内的数字(包括 0.90)

于 2012-12-07T13:53:52.473 回答
5
var
  float : Double;

  float := Random;  // Random float in range: 0 <= float < 1
  float := 0.1 + float*0.8 // 0.1 <= float < 0.9

要初始化随机数生成器,请在第一次调用函数之前进行一次调用Randomize或设置RandSeed参数Random

不这样做,每次运行程序时都会生成相同的序列。但是请注意,在为另一个编译器版本重新编译时,不能保证此顺序。

于 2012-12-06T22:23:43.727 回答
1

试试这个:

function RandomRangeF(min, max: single): single;
begin
  result := min + Random * (max - min);
end;
于 2017-01-14T09:36:49.920 回答
-1

这有点厚颜无耻,但这里有:取决于浮点数之后你想要多少个数字。例如,如果您想要 1 个数字,您可以在 100 - 999 范围内生成然后除以 10。或者 1000 - 9999 然后除以 100。

于 2021-06-06T08:41:59.107 回答