Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按x%在类似数字列表中查找一个数字_C#_.net_Algorithm_Search_.net Core - Fatal编程技术网

C# 按x%在类似数字列表中查找一个数字

C# 按x%在类似数字列表中查找一个数字,c#,.net,algorithm,search,.net-core,C#,.net,Algorithm,Search,.net Core,我有下面的数字列表,其中我需要找到一个满足最接近匹配数字的最小值和最大值之间5%差异的数字,并计算其平均值 输入列表 [2500、2510、7000、7500、1000、1200、2460] 预期产出 2500+2510+2460/3=2490 此处最小值为2460,最大值为2510,差值为50,小于2460的5%,即123 var numbers = new int[]{ 2500, 2510, 7000, 7500, 1000, 1200, 2460}; var orderedNum

我有下面的数字列表,其中我需要找到一个满足最接近匹配数字的最小值和最大值之间5%差异的数字,并计算其平均值

输入列表

[2500、2510、7000、7500、1000、1200、2460]

预期产出

2500+2510+2460/3=2490

此处最小值为2460,最大值为2510,差值为50,小于2460的5%,即123

  var numbers = new int[]{ 2500, 2510, 7000, 7500, 1000, 1200, 2460};
  var orderedNumbers = numbers.OrderBy(x => x).ToList();

  var numbersToConsider = ???? //2500, 2510, 2460 that they are similar with in 5% range
我坚持在这里找到数字

我需要找到一个相似的。基本上,这些数字是每月的贷款支付和一些其他费用。贷款支付额可能会有x%的变化,大部分不到5%。现在我需要从列表中计算出这些贷款付款,并取平均值

  • 计算平均值
    avg
  • 计算
    min=avg-5%
  • 计算
    max=avg+5%
  • 迭代您的值并输出
    min
    max
  • 您可以通过以下方式获得“关闭”编号:

    const int maxPercentage = 5;
    List<int> numbers = new List<int>{2500, 2510, 7000, 7000, 7500, 1000, 1200, 2460};
    List<List<int>> closeNumbers = new List<List<int>>();
    
    foreach (int i in numbers.OrderBy(i => i))
    {
        if(closeNumbers.Count == 0)
        {
            closeNumbers.Add(new List<int> {i});
            continue;
        }
    
        List<int> lastCloseNumbers = closeNumbers.Last();
        int maxDistance = (int)(lastCloseNumbers.Average() / 100.0 * maxPercentage);
        if(i - lastCloseNumbers.Last() <= maxDistance)
            lastCloseNumbers.Add(i);
        else
            closeNumbers.Add(new List<int> {i});
    }
    

    你到底在哪里被卡住了?为什么要订购这些数字?我们如何在5%中找到这些数字2500、2510、2460range@MrSmith42订购可能有助于找到它们。基本上,我需要计算两个数字之间的距离并应用我的条件。但是我需要迭代所有的项目,我想你似乎在你的数据中搜索集群,它们的相似性是95%,不是吗?这真的帮助了我:)我们如何在接近数字列表中得到7000和7500?他们没有5%的差异。为了更清楚地了解我想要实现的目标,我更新了有问题的用例:)@Developer:最后两个值的总和是14500,5%是725,但它们的差值是500。我不是在寻找两个值的5%的总和。它基本上是每个列表中最小值和最大值之间5%的差异。你救了我一天!在过去的两天里,我一直在尝试这个逻辑,但我坚持认为:)我接受这个逻辑answer@Developer:也许你想要平均值的5%,而不是总和。编辑它
    1000 
     
    1200  
    
    2460 
    2500 
    2510 
    
    7000 
    7000 
    
    7500