【问题标题】:How can I do an average reverse in c#? [closed]如何在 c# 中进行平均反转? [关闭]
【发布时间】:2017-05-06 18:56:30
【问题描述】:

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

例如

如果我输入数字 3,92,则返回值是数字列表 3,89 3,57 4,3(随机化)

【问题讨论】:

  • 你的问题没有任何意义。
  • 没有意义?
  • x 输入,return new double[] {x, x, x}
  • 您自己尝试过吗?

标签: c# function average inverse


【解决方案1】:

这是一个可以做到这一点的方法。

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)

【讨论】:

    猜你喜欢
    • 2016-03-09
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多