【问题标题】:Building a concrete list from a set of aggregates (sum, average, etc)从一组聚合(总和、平均值等)构建具体列表
【发布时间】:2023-03-04 23:32:01
【问题描述】:

我正在尝试编写一个函数,该函数获取有关数字列表(货币)的一些汇总信息,并返回具有这些属性的具体列表。例如,我将要求一个平均为 265.43 美元、总和为 6,000 美元、最高为 1,000 美元等的列表。作为回报,我将得到一个完整的列表,其平均值为 265.43 美元,总和为 6,000 美元等。满足属性的列表可能有很多,但我不需要一一列举,只需要返回其中任何一个即可。

以下是列表的属性:

  • 长度为 N
  • 总和为 S
  • 平均值为A
  • 最小的数字是L
  • 最高数字是H
  • 它匹配美元范围的细分:
    • X 个值低于 75 美元
    • Y 值介于 $75 和 $200 之间
    • Z 值大于 200 美元

我想为这些参数中的每一个传递值,并返回一个与它们匹配的列表。我有几百个这样的集合 { N, S, A, L, H, X, Y, Z } 但我没有任何用于制作它们的后备列表。我不需要我生成的列表与原始列表完全相同,我只需要它们看起来与原始列表相同,从聚合的角度来看。

我想这样称呼它 --> list = gimmeThatList(N, S, A, L, H, X, Y, Z)

我什至不知道从哪里开始寻找这方面的信息,因此我们非常感谢任何帮助,即使它只是一个链接或谷歌搜索词。如果你能抽出时间,一些真正的代码会很好,但我会尽我所能。

【问题讨论】:

  • 我认为这只是找到解决问题的创造性方法。这不是一个标准问题或任何东西。您自己为此做了哪些努力?
  • 是的,你是对的,我只是希望这是一个我不知道的标准问题。我以前花时间重新发明轮子,所以不想再犯同样的错误。我自己的努力与您提供的解决方案非常接近,所以我会继续走这条路

标签: java algorithm list statistics aggregate


【解决方案1】:

一些想法:

  • N 是多余的,因为它是 X、Y 和 Z 的总和
  • A 是多余的,因为它等于 S / N
  • LH 可以替换为 X、Y 和 Z 子集的通用价格范围条件。您可以假设这些值出现在列表中并解决简化问题(S' = S - L - H, X', Y', Z'),相应地调整 X、Y 和 Z,并限制简化列表中的所有数字都落入范围 [L, R]

对于 X' 值,我们有范围 [L, min (75, H)],对于 Y' 值 [max (75, L), min (H,200)],对于 Z' [max (L , 200), H]

我们可以轻松计算出下限X' * L + Y' * max (75, L) + Z' * max(L, 200) 以及我们可以创建的可能总和的相应上限。通过一个简单的贪心算法(留给读者作为练习,考虑 X、Y 和 Z 范围的各个总和下限/上限),我们还可以生成该范围内的每个总和,包括 S'

【讨论】:

  • 谢谢。我将更多地研究贪婪算法,这似乎是我需要的解决方案。到目前为止,我最大的问题是让平均值完全正确(总和没问题),但我会再想一想,直到解决方案出现为止。再次感谢
  • @huxley 正如我所说,如果你得到正确的总和,你会立即得到正确的平均值。我认为文献对您没有帮助,但是有一个非常简单的策略可以得到所需的金额
  • 哇,我很笨,是的,我明白你在说什么。谢谢。
  • @Nicklas B. 嘿,多亏了你的帮助,我才开始工作。我把事情复杂化了。我所要做的就是按照你所说的匹配总和,其他一切都自己解决。
  • @huxley 太棒了!很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多