这个问题可能与数学有关,而不是与编程有关。我将通过一个例子来解释这个问题。 假设我有一个包含100个项目的数组,我想为这些项目分配值,使得前80%项目中的值总和为20%,最后20%中的值总和为20%。这些项目是80%。也就是说,前80%的项目获得20%,其余项目获得80%。知道项目的数量是在运行时确定的。
这可能吗?
感谢。
答案 0 :(得分:4)
让我们说总数为100. Asign 0.25到前80%(80项)。因此前80项的总和将是80 * 0.25 = 20(占总数的20%)。现在分配4来休息20%(20项)。因此,最后20项的总和将是20 * 4 = 80(占总数的80%)这是您在代码中所需要的。
double[] items = new double[100];
for (int i = 0; i < 80; i++)
items[i] = 0.25;
for (int i = 80; i < 100; i++)
items[i] = 4;
答案 1 :(得分:2)
当然。
总计为1,而80%为0.8。如果20个项目总计为0.8,则每个项目得到0.8 / 20 = 0.04。 其余80个项目总共0.2个,每个项目得到0.2 / 80 = 0.01 / 4 = 0.0025。
double[] items = new double[100];
for (int i = 0; i < 20; i++)
items[i] = 0.04;
for (int i = 20; i < 100; i++)
items[i] = 0.0025;
同样适用于整数等。