Algorithm 在q成员的p组中分布n个对象
我无法找到这个问题的答案: 给定Algorithm 在q成员的p组中分布n个对象,algorithm,math,Algorithm,Math,我无法找到这个问题的答案: 给定n对象的n至少为2的整数,我需要在p组之间平均分配它们,其中p大于或等于2和n大于或等于p,其中,通过“相等”,我的意思是:每个组包含q成员q至少1个。一个组的成员数量决定了该组的“权重”,因为n对象应该分布在较大的组(即更多的成员)中以获得更多的对象。但是,每个组必须至少接收一个对象 示例:给定n=5对象和两组p_1和p_2和q_1=1和q_2=9,p_1得到1个对象和p_24。首先,不要求每个组必须至少有一个对象: 统一绘制一个介于1和sum(q_n)=q_1
n
对象的n
至少为2的整数,我需要在p
组之间平均分配它们,其中p
大于或等于2和n
大于或等于p
,其中,通过“相等”,我的意思是:每个组包含q
成员<代码>q至少1个。一个组的成员数量决定了该组的“权重”,因为n
对象应该分布在较大的组(即更多的成员)中以获得更多的对象。但是,每个组必须至少接收一个对象
示例:给定
n=5
对象和两组p_1
和p_2
和q_1=1
和q_2=9
,p_1
得到1个对象和p_2
4。首先,不要求每个组必须至少有一个对象:
统一绘制一个介于1和sum(q_n)=q_1+q_2+…+q_n之间的整数
如果整数介于sum(q_i)
和sum(q_{i+1})
之间,则将一个对象添加到组i
现在,为了确保每个组都有一个对象,只需向每个组添加一个对象(它不会改变加权分布)。首先,不要求每个组至少有一个对象:
统一绘制一个介于1和sum(q_n)=q_1+q_2+…+q_n之间的整数
如果整数介于sum(q_i)
和sum(q_{i+1})
之间,则将一个对象添加到组i
现在,为了确保每个组都有一个对象,只需向每个组添加一个对象(它不会改变加权分布)。您的问题不是很清楚。你可能想要这个:
// add 1 to each group and subtract from n
for (int i = 0; i < p; ++i)
group[i] = 1;
n -= p;
while (n > 0)
{
// find i, such that q[i] / group[i] is maximum
int imax = 0;
double max = q[0] / group[0];
for (int i = 1; i < p; ++i)
{
if (q[i] / group[i] > max)
{
max = q[i] / group[i];
imax = i;
}
}
++group[imax];
--n;
}
//每个组加1,然后从n中减去
对于(int i=0;i0)
{
//求i,使q[i]/组[i]最大
int imax=0;
双最大值=q[0]/组[0];
对于(int i=1;i
max)
{
max=q[i]/组[i];
imax=i;
}
}
++组[imax];
--n;
}
你的问题不是很清楚。你可能想要这个:
// add 1 to each group and subtract from n
for (int i = 0; i < p; ++i)
group[i] = 1;
n -= p;
while (n > 0)
{
// find i, such that q[i] / group[i] is maximum
int imax = 0;
double max = q[0] / group[0];
for (int i = 1; i < p; ++i)
{
if (q[i] / group[i] > max)
{
max = q[i] / group[i];
imax = i;
}
}
++group[imax];
--n;
}
//每个组加1,然后从n中减去
对于(int i=0;i0)
{
//求i,使q[i]/组[i]最大
int imax=0;
双最大值=q[0]/组[0];
对于(int i=1;i
max)
{
max=q[i]/组[i];
imax=i;
}
}
++组[imax];
--n;
}
见。。。问题是,‘有没有实现这种分布的算法?’输入是什么?你要指定n和p?更清楚的是,听起来“平等”并不重要;i、 e.群体的规模不同?我不清楚q_2=9在你的例子中的意思是什么?分布应该根据群体的“规模”,而“规模”是由成员的数量决定的。输入是n,p_i(i组)和q_i(p_i组的q个成员)。q_2=9表示组p_2的9个成员。。。。问题是,‘有没有实现这种分布的算法?’输入是什么?你要指定n和p?更清楚的是,听起来“平等”并不重要;i、 e.群体的规模不同?我不清楚q_2=9在你的例子中的意思是什么?分布应该根据群体的“规模”,而“规模”是由成员的数量决定的。输入是n,p_i(i组)和q_i(p_i组的q个成员)。q_2=9表示p_2组的9名成员。是的,我相信这正是我想要的。是的,我相信这正是我想要的。