gpt4 book ai didi

mysql - 如何在MySQL中选择带权重的随机数

转载 作者:行者123 更新时间:2023-11-30 00:40:23 24 4
gpt4 key购买 nike

我想选择一个 1 到 12 之间的随机数,但有权重,即 4、5、6 应该有 50% 的机会,而 1,2,3,7,8,9,10,11,12就会有另外50%的机会。我使用了以下代码,但是有没有更有效的方法来执行此操作,而不是重复相同的数字两次来实现加权?

select v_month from
(select 4 as v_month
union select 4
union select 5
union select 5
union select 6
union select 6
union select 1
union select 2
union select 3
union select 7
union select 8
union select 9
union select 10
union select 11
union select 12
) as tbl4
order by rand()
limit 1;

谢谢!

最佳答案

如果你要使用查询,我认为你可以这样做

1-创建尝试表并放入值

CREATE TABLE try
(`id` int)
;

INSERT INTO try
(`id`)
VALUES
(1),
(2),
(3),
(4),
(4),
(5),
(5),
(6),
(6),
(7),
(8),
(9),
(10),
(11),
(12)
;

然后轻松运行此查询

  select id from try
order by rand()
limit 1;
  • 对于优化来说,这将比您的快得多。

我测试了一下,你的查询需要 6 毫秒,而这个查询需要 1 毫秒

关于mysql - 如何在MySQL中选择带权重的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com