python – 根据定义的比率分配值

我这里有一个场景.让我用一个小例子来解释.

我有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

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,8/13,10/13 -> 4,4,1

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

更新
如果你想确保每个人在可能的情况下至少收到一支笔,那么首先给每个人一支笔,优先考虑那些需要最多笔的笔,以防每个人都没有足够的笔.然后按上述步骤操作.

相关文章

使用OpenCV实现视频去抖 整体步骤: 设置输入输出视频 寻找帧...
前言 对中文标题使用余弦相似度算法和编辑距离相似度分析进行...
前言 之前尝试写过一个爬虫,那时对网页请求还不够熟练,用的...
前言 本文使用Python实现了PCA算法,并使用ORL人脸数据集进行...
前言 使用opencv对图像进行操作,要求:(1)定位银行票据的...
天气预报API 功能 从中国天气网抓取数据返回1-7天的天气数据...