簡體   English   中英

MongoDB 和 Node.js 查詢具有權重概率的隨機值

[英]MongoDB and Node.js query a random value with weight probability

我正在制作一個游戲並且項目存儲在我的數據庫中,我正在考慮用重量存儲它們,以便有 xx% 的機會獲得該項目。

有沒有辦法用 MongoDB 或考慮到數據庫尚未填充的任何替代方法來做到這一點,我在谷歌上找不到任何東西

我使用 Node.js 作為代碼部分,如果需要,我可以在代碼部分做一些事情,比如生成隨機數左右

我正在考慮只生成一個介於 0 和 1 之間的隨機數,對權重進行劣等或相等的檢查並隨機選擇一個文檔,這樣權重越高,它被搶劫的可能性就越小,這是否相關?

你可以:

  1. 創建一個集合
  2. 將概率縮放到 integer 值(例如 0-100)
  3. 對於每個文檔,將 X 個文檔插入到新集合中,其中 X 是原始文檔的概率。 新集合中唯一需要的字段是原始文檔的 id,但由於 _id 必須是唯一的,因此您需要將 id 值存儲在其他字段中
  4. 使用 $sample 從新集合中獲取加權隨機文檔 id
  5. 通過原始集合中的 id 查找文檔(作為單獨的查詢或通過 $lookup)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM