我怎样才能在 C# 中进行平均反转?

How can I do an average reverse in c#?

我需要创建一个函数,如果我输入一个数字,return 3 个数字,你的平均值与我传递的数字相同

例如

如果我输入数字 3,92,return 值是一个数字列表 3,89 3,57 4,3(随机)

这里有一个方法可以做到这一点。

public double[] AverageReverse(double targetAverage, double range)
{
    var r = new Random(); // TODO: Cache it between calls to avoid "why does ny Random class only produce the same numbers?"
    var n1 = targetAverage - r.NextDouble() * range;
    var n2 = targetAverage + r.NextDouble() * range;
    var n3 = 3 * targetAverage - (n1 + n2);

    return new[] { n1, n2, n3 };
}

示例:

var ar = AverageReverse(3.92, 0.5);
// returns (example):
//   3,76575929136284 
//   3,98495292557634 
//   4,00928778306082 
// average:
//   3.92

它的工作方式是通过求解以下等式:

average = (n1 + n2 + n3) / 3

对于 n3 给出:

    average             = (n1 + n2 + n3) / 3
3 * average             =  n1 + n2 + n3
3 * average - (n1 + n2) =            n3

因此:

n3 = 3 * average - (n1 + n2)