python - 按照定义的比率赋值

标签 python c algorithm math

我这里有一个场景。让我通过小例子来解释。

我有 10 支笔,我必须分给 3 个人。这些人的比例是 6:6:1 意味着如果我给 C 1 支笔,我必须给 A 和 B 6-6 支笔。

我尝试使用下面描述的简单计算来解决它。

PerPersonPen = (TotalCountofPens * PerPersonRatio)/(SumofAllPersonsRatio) 

Person A =(Int) (10*6)/13 = 4
Person B = (Int) (10*6)/13 = 4
Person C = (Int) (10*1)/13 = 0

在这里,C 将获得 0 笔,但这不应该发生。我希望 A 和 B 能得到 4 支笔,这是对的。但是 C 也应该得到 1 支笔,剩下的。

如果任何人与其他人相比有 1 个比率计数,就会发生这种情况。

谁能帮我解决这个问题?或者我怎样才能实现它?

最佳答案

一个简单的方法是统计每个人应该得到多少支笔。然后,只要有笔可以发,你就给应该得到最多笔的人一支。

这是您的示例的工作:

60/13, 60/13, 10/13 -> 1, 0, 0

47/13, 60/13, 10/13 -> 1, 1, 0

47/13, 47/13, 10/13 -> 2, 1, 0

34/13, 47/13, 10/13 -> 2, 2, 0

34/13, 34/13, 10/13 -> 3, 2, 0

21/13, 34/13, 10/13 -> 3, 3, 0

21/13, 21/13, 10/13 -> 4, 3, 0

8/13, 21/13, 10/13 -> 4, 4, 0

8/13, 8/13, 10/13 -> 4, 4, 1

8/13, 8/13, -3/13 -> 5, 4, 1

关于python - 按照定义的比率赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43134511/

相关文章:

c - 打印 64 位素数和

python - 在 Python 中比较两个文本 block

python - Python 中的前一个工作日

python - Twisted python 中的 Protocol 和 ProcessProtocol 有什么区别?

python - Cython 初学者 - 加速 numpy 广播

c - 有没有办法在 C 中拆分多个字符的字符串?

python - Python YQL 入门

c++ - 在 OpenCL clCreateContext 中从 void (*) (...) 到 void (*) (...) 的无效转换

java - 循环所有可能的组组合以获得最高值

c++ - 除了 increment 语句外,如何制作 for 循环变量 const?