【问题标题】:I need random algorithm that fulfills condition我需要满足条件的随机算法
【发布时间】:2017-03-03 11:07:36
【问题描述】:

假设我在数据库中有一个Product 表,它具有idprice 的以下属性:

Product
=======
ProductId int PRIMARY KEY
Price int

为简单起见,我将Price 设为int 数据类型。所以现在我想使用一个随机算法,从数据库中检索n 的记录数,由此Price 的总和将达到固定数量m

例如:

  • n = 5
  • m = 100

所以我将检索 5 个 Product 记录,Price 将加起来为 100

一种可能的结果:

ProductId       Price
=====================
       5          10
     109          27
    2081          31
     139          21
     331          11
======================
           Sum:  100

我尝试过蛮力方法,但似乎需要很长时间才能获得正确的 100 总和。有什么算法可以做到这一点吗?

【问题讨论】:

  • 你需要先想出所有可能的排列加到 100,然后从那里随机选择。
  • 你有这个测试数据库吗?想用它来挑战自己。
  • 昨天看到这个也许这个答案可以使用stackoverflow.com/a/42563928/491907

标签: c# algorithm random


【解决方案1】:

您的问题可以被视为Subset sum problem。您可以在这里找到与它相关的所有信息:

Wiki:Subset Problem

如果您需要精确的值,问题是 NP(不能用大量数据解决),如果近似值没问题,您有一些选择。

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多