Javascript 如何获得固定平均值的可能结果?

Javascript 如何获得固定平均值的可能结果?,javascript,algorithm,math,dynamic-programming,Javascript,Algorithm,Math,Dynamic Programming,我知道这个问题很难理解,但我需要一个javascript的数学公式 I am having dynamic number from 0 to 7. 现在我有5张唱片: a = from 0 to 7, b = from 0 to 7, c = from 0 to 7, d = from 0 to 7, e = from 0 to 7 现在我需要一个方程,从中我可以找到a,b,c,d和e的可能输出,使平均值为5 Like for average = 5: 1. a = 5, b = 5, c

我知道这个问题很难理解,但我需要一个javascript的数学公式

I am having dynamic number from 0 to 7.
现在我有5张唱片:

a = from 0 to 7,
b = from 0 to 7,
c = from 0 to 7,
d = from 0 to 7,
e = from 0 to 7
现在我需要一个方程,从中我可以找到a,b,c,d和e的可能输出,使平均值为5

Like for average = 5:
1. a = 5, b = 5, c = 5, d = 5, e = 5
2. a = 2, b = 7, c = 6, d = 5, e = 5

用户将输入所需的平均值,我需要抛出可能的输出以获得填充平均值。

这似乎是一个与整数规划相关的问题。使用动态规划策略可以相对有效地解决该问题,该策略为较小的子问题保持不变,并将这些子问题合并到最终解决方案中。下面是一个高级算法,可以帮助您实现目标:

1) 从0到7之间的随机种子数x_1开始

2) 现在执行以下三次(i=2,3,4):

3) 找到尽可能少的下一个号码。要使五个数字的平均值为5,所有五个数字的目标总和为25。因此,你需要确保自己根本不否认自己达到25岁的能力。让min_i+1确定0..7的最小数,这样到目前为止所有x_i加上min_i+1*(5-i)>=25

示例:假设i=2,到目前为止,您的数字是4和5。那么最小允许的第三个数字minu 3是6。到目前为止,总和是9和5-i=3。9+3*6=27>=25和9+3*5=24<25。这意味着如果你选择5作为min_3,你将无法再达到25的目标

4) 选择x_i+1作为最小值i+1和7之间的随机数

5) 最后,选择x_5作为x_1..x_5的25和。输出x_1到x_5


整个算法的示例:

设x_1=6

=>最小值2=5,总和=6

设x_2=5

=>最小值3=5,总和=11

设x_3=7

=>最小值4=4,总和=18

设x_4=5

=>总和=23

=>x_5=2(=25-23)

输出:[6,5,7,5,2],其平均值为5

现在这个算法将产生非常有偏差的输出,如果你想让它看起来更随机,只需提供最终结果的排列,例如,在我们的示例中,你可以输出[5,7,2,5,6]


在Javascript中实现这一点应该没有问题,而且它可以很容易地进行调整,以适应x_i和总平均值的其他可能范围。如果最终样本量应为n,平均值为n,请确保将目标总和修改为n*avg。

只有32768种可能的组合,因此您可以使用嵌套的loops@assylias:(这就是为什么我需要找到任何常见的数学函数。可能的