SQL Server - 随机随机播放结果,但为每条记录分配权重

Posted

技术标签:

【中文标题】SQL Server - 随机随机播放结果,但为每条记录分配权重【英文标题】:SQL Server - Shuffle results randomly, but with a weight assigned to each record 【发布时间】:2011-07-06 18:00:04 【问题描述】:

我知道使用 SQL Server 随机播放结果的常规方法是按NEWID() 排序,但我想改用加权随机播放。

我表中的每条记录都有一个从 1 到 10 的整数“重要性”。我想按 RAND()*Importance 排序,但 SQL Server 的 RAND() 为返回的每条记录返回相同的值。

有什么想法吗?

【问题讨论】:

您的意思是按重量排序、随机排序还是只是某种“加载骰子”,其中 10 的记录可能在 1 的记录之前? 加载骰子。如果我有两条记录,重要性值为 1 和 10,我希望看到 10 的记录在 10 次中出现大约 9 次。 【参考方案1】:

看看SQL Server - Set based random numbers 的一些想法

【讨论】:

谢谢。 ABS(CHECKSUM(NEWID())) / 100 * Importance 完美地完成了这项工作。

以上是关于SQL Server - 随机随机播放结果,但为每条记录分配权重的主要内容,如果未能解决你的问题,请参考以下文章

使用 mysql/sql 随机播放字符串

SQL Server 中的伪随机可重复排序(不是 NEWID() 和 RAND())

sql server 获取随机数函数RAND()和RAND(x)

在 sql3 中随机播放大表

根据 SessionID 随机播放 LINQ 查询的结果

sql Fisher-Yates在PL / SQL中进行了随机播放