在浮点数范围内生成随机数

5
我们如何在Delphi XE3中生成在浮点数范围内的随机数呢?
例如,在[0.10 to 0.90]范围内生成随机数。 我们需要得到以下结果: [ 0.20 , 0.32 , 0.10 , 0.50 ] 谢谢提供解决方案...

1
0.05不在范围[0.10..0.90]内,你为什么期望它出现在结果中呢;o) - Sir Rufo
这只是一个打字错误。 ;) - return
4
接受答案中的代码不会达到上限(0.9),这样可以吗? - mjn
4个回答

6
另一个选择是使用RandomRange(返回:AFrom <= r < ATo),具体用法如下:
RandomRange(10, 90 + 1) / 100

或者

RandomRange(10, 90 + 1) * 0.01

将返回范围在0.10至0.90之间的数字(包括0.90)。


5
var
  float : Double;

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

为了初始化随机数生成器,请在第一次调用Random函数之前,调用Randomize或设置RandSeed参数。
不这样做会导致每次运行程序生成相同的序列。但请注意,在重新编译为另一个编译器版本时,不能保证此序列相同。

1

试试这个:

function RandomRangeF(min, max: single): single;
begin
  result := min + Random * (max - min);
end;

-1
这有点难搞,但是看情况而定:取决于小数点后你想要几个数字。例如,如果你只想要一个数字,可以生成 100 到 999 的范围内的数,然后除以 10。或者 1000 到 9999 的范围内的数,再除以 100。

1
我认为你可以添加一段代码来阐述你的想法。 - heat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接