Math 从百分比值创建逻辑有序队列列表

Math 从百分比值创建逻辑有序队列列表,math,percentage,Math,Percentage,这是一项数学任务。我需要从x值创建一个订单列表(或队列列表)——每个人都是%,所有人的总和是100。我想要这些值的逻辑顺序。让我们看看这个: a = 50, b = 25, c = 15, d = 10 这些数字的最大公约数是5,因此队列的长度应为100/5=20。结果应该是这样的(或非常相似): 我在找如何下这个订单的配方。提前感谢。我认为您希望在整个数组或字符串中尽可能均匀地分发每个字母。找到最大公约数并将数字50、25、15、10除以它的初步步骤很简单。完成后,您将获得每个字母必须出现的

这是一项数学任务。我需要从x值创建一个订单列表(或队列列表)——每个人都是%,所有人的总和是100。我想要这些值的逻辑顺序。让我们看看这个:

a = 50,
b = 25,
c = 15,
d = 10
这些数字的最大公约数是5,因此队列的长度应为100/5=20。结果应该是这样的(或非常相似):


我在找如何下这个订单的配方。提前感谢。

我认为您希望在整个数组或字符串中尽可能均匀地分发每个字母。找到最大公约数并将数字50、25、15、10除以它的初步步骤很简单。完成后,您将获得每个字母必须出现的次数。然后算法可以是:从空字符串开始,添加“代表性最差”的字母,重复。我将“代表性最差”定义为最大差异(期望比例)-(到目前为止的实际比例)

下面是用Python实现的算法

count = {'a': 10, 'b': 5, 'c': 3, 'd': 2}
length = sum(count.values())
str = ''
while len(str) < length:
    deficit = {}
    for char in count:
        deficit[char] = count[char]/length - (str.count(char)/len(str) if str else 0)
    str += max(deficit, key=deficit.get)
print(str) 

该订单与gcd有何关联?我不知道你到底想达到什么目的。
count = {'a': 10, 'b': 5, 'c': 3, 'd': 2}
length = sum(count.values())
str = ''
while len(str) < length:
    deficit = {}
    for char in count:
        deficit[char] = count[char]/length - (str.count(char)/len(str) if str else 0)
    str += max(deficit, key=deficit.get)
print(str) 
a..a.a.a.a.a.a.a.a.a
.b....b...b...b...b.
..c.....c.......c...
....d.......d.......