|
|
1
18
简单的算法草图在这里。。。
基本示例:
|
|
|
2
12
TL;博士 算法具有最佳(+20%)的可能精度,速度慢70%。 接受答案中给出的评估算法 here answer 这是一个性质相似的问题。
测试结果(10000次迭代)
分发3在分配数量上。
通过一次以上的循环来牺牲速度和准确性。
分发4
测试线束
|
|
|
3
2
您的问题是定义什么是“可接受的”舍入策略,或者换句话说,您试图最小化的是什么。首先考虑这种情况:你的列表中只有2个相同的项目,并试图分配3个单位。理想情况下,您希望为每个项目分配相同的金额(1.5),但这显然不会发生。你所能做的“最好”就是分配1和2,或者2和1
然后,我选择1和2而不是0和3,因为我假设您想要的是最小化完美分配和整数分配之间的差异。这可能不是你认为的“一个好的分配”,这是一个你需要思考的问题:什么会比另一个更好的分配?
|
|
|
4
2
好啊我非常确定,原始算法(如编写的)和发布的代码(如编写的)并不完全符合@Mathias所概述的测试用例的要求。
拿100美元,按33.333%的百分比分成3份。 使用@jtw发布的代码(假设这是原始算法的准确实现),您会得到错误的答案,即为每个项目分配33美元(总金额为99美元),因此测试失败。
在T-SQL中实现,如下所示:
据我所知(我在代码中有几个测试用例),它非常优雅地处理了所有这些情况。 |
|
|
5
1
apportionment 问题,对此有许多已知的方法。所有这些都有某些病态:阿拉巴马悖论、人口悖论或配额规则的失败(Balinski和Young证明了没有任何方法可以避免这三种情况。)你可能想要一种遵循报价规则并避免阿拉巴马悖论的方法;人口悖论并不那么令人担忧,因为不同年份之间每月的天数没有太大差异。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |