我需要满足条件的随机算法

时间:2017-03-03 11:07:36

标签: c# algorithm random

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

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

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

例如:

  • n = 5
  • m = 100

因此,我将检索Product将添加到Price的5条100条记录。

一个可能的结果:

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

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

1 个答案:

答案 0 :(得分:2)

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

Wiki:Subset Problem

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