【问题标题】:Generate random number in a float range在浮点范围内生成随机数
【发布时间】:2012-12-06 22:10:00
【问题描述】:

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

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

[ 0.20 , 0.32 , 0.10 , 0.50 ]

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

【问题讨论】:

  • 0.05 不在 [0.10..0.90] 范围内,为什么您希望它出现在结果中;o)
  • 这只是一个印刷错误。 ;)
  • 接受答案中的代码不会达到范围上限(0.9),可以吗?

标签: delphi delphi-xe3


【解决方案1】:

另一种选择是使用RandomRange(返回:AFrom <= r < ATo),如下所示:

RandomRange(10, 90 + 1) / 100

RandomRange(10, 90 + 1) * 0.01

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

【讨论】:

    【解决方案2】:
    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 参数。

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

    【讨论】:

      【解决方案3】:

      试试这个:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我认为您可以添加代码来举例说明您的想法
        猜你喜欢
        • 2013-12-20
        • 1970-01-01
        • 2015-10-10
        • 2014-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 2012-08-06
        相关资源
        最近更新 更多