【问题标题】:Select random number from a specific list从特定列表中选择随机数
【发布时间】:2019-06-06 02:30:30
【问题描述】:

如何在 MySQL 中获取随机数 [10, 20, 30, 50]

我尝试过使用ROUND(RAND() * (50 - 10) + 10),但是这会生成我不想要的11, 12, 24 之类的数字。

我想知道这段代码是否会:

FLOOR((RAND([5,10,15,20,25,30,35,40]))

但是怎么做呢?

我想使用 ROUND(RAND() * (50-10) + 10) 将我的数量列设置为随机选择 10、20、30 或 50。而不是 11、12 或其他可能的数字。

希望清楚。

【问题讨论】:

  • 如果您知道要生成的数字,那么它们并不是真正随机的,对吧?也许您可以更好地解释一下您要在这里做什么?
  • 使用循环而不是 rand() 函数。

标签: mysql sql random


【解决方案1】:

试试这个效果很好

ROUND(RAND() * (5-1))*10

【讨论】:

  • 这就像魅力!谢谢..我修改为 ROUND(RAND() * (5-1) + 1)*10 以防止 0 输出
  • 它也将返回零。可能需要稍微调整一下。
  • 这将返回 40。但更重要的是,不要将 ROUND 函数与 RAND...
【解决方案2】:

如果你想要可以乘以 10 的数字,请使用 Div 然后乘以 10

选择 ((FLOOR(RAND()*(50-10+1))+10) DIV 10 ) * 10 ;

【讨论】:

    【解决方案3】:

    以下将为您提供列表中的一个数字

    SELECT ELT(FLOOR(RAND() * 4) + 1, 10, 20, 30, 50);
    

    这里 4 是列表的大小,因为ELT 是从一开始的,所以添加了一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多