【问题标题】:Can MySQL generate random numbers that can be either negative or positive?MySQL 可以生成可以为负数或正数的随机数吗?
【发布时间】:2014-03-28 20:39:38
【问题描述】:

在 MySQL 中有什么方法可以生成一个可以是正负的随机数?

例如,我想要 -1.01.0 之间的双精度,而不是 0.01.0 之间的双精度,这是 RAND() 返回的。

【问题讨论】:

  • 有人建议使用接近的 (RAND() - RAND()),但它倾向于返回一个介于 -0.5 和 0.5 之间的值,并且命中上限和下限的机会较小限制。我在一个电子表格中运行了一个小测试,在其中我将公式应用于 100 行并检查了返回的最小和最大结果。它们很少超过 -0.89 和 +0.89,而简单的 RAND() 总是会返回一个更接近下限和上限的值。 i.imgur.com/hJb3pfB.png

标签: mysql random


【解决方案1】:
SELECT -1+2*RAND();

应该返回一个介于 -1.0 和 1.0 之间的双精度值。

【讨论】:

【解决方案2】:

一般来说,FLOOR(RAND() * <ScaleFactor> + <Offset>) 会生成一个带有比例和偏移量的随机数。

所以rand()返回01之间的随机数,如果我们缩放2,新范围将是0-2,现在如果我们将它移动-1,它应该会给你所需的结果@ 987654326@

Select RAND() * 2 + (-1) as MyRandomNumber

【讨论】:

    【解决方案3】:

    这将选择数字是负数还是正数,并在-1.01.0之间返回一个RAND()

    SELECT CASE WHEN ROUND(RAND()) = 0 THEN RAND()-1 ELSE RAND() END AS randNum
    

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多