【问题标题】:MongoDB and Node.js query a random value with weight probabilityMongoDB 和 Node.js 查询具有权重概率的随机值
【发布时间】:2021-08-15 02:06:00
【问题描述】:

我正在制作一个游戏并且项目存储在我的数据库中,我正在考虑用重量存储它们,以便有 xx% 的机会获得该项目。

考虑到数据库尚未填充,有没有办法使用 MongoDB 或任何替代方法来做到这一点,我无法在 Google 上找到任何东西

我在代码部分使用 Node.js,如果需要,我可以在代码部分做一些事情,比如生成随机数左右

我正在考虑只生成一个介于 0 和 1 之间的随机数,对权重进行劣等或相等的检查并随机选择一个文档,这样权重越高,它被抢劫的可能性就越小,这是否相关?

【问题讨论】:

    标签: javascript node.js database mongodb


    【解决方案1】:

    你可以:

    1. 创建一个集合
    2. 将概率缩放为整数值(例如 0-100)
    3. 对于每个文档,将 X 个文档插入到新集合中,其中 X 是原始文档的概率。新集合中唯一需要的字段是原始文档的 id,但由于 _id 必须是唯一的,您需要将 id 值存储在其他字段中
    4. 使用 $sample 从新集合中获取加权随机文档 ID
    5. 通过文档在原始集合中的 id 查找文档(作为单独的查询或通过 $lookup)

    【讨论】:

    • 这听起来是个好主意,但它也看起来像一个“作弊”而不是一个干净的解决方案,如果我没有找到更好的解决方案,我可能会这样做。感谢您的回答
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2013-11-29
    • 1970-01-01
    • 2011-09-19
    • 2013-06-19
    相关资源
    最近更新 更多