两个数组之间的等效百分比
本文关键字:百分比 之间 数组 两个 | 更新日期: 2023-09-27 18:08:58
我需要一种方法来比较两个数组并计算等效百分比因此,如果等效百分比超过(例如60%),请采取一些行动使用的语言是c# .NET 4.0
这个问题定义得很差,所以我做了一些宽泛的假设,但这里有一个基于元素相等性度量等价性的示例实现:
int[] a = new int[] { 1, 2, 3, 4, 5 };
int[] b = new int[] { 1, 7, 3, 4 };
int equalElements = a.Zip(b, (i, j) => i == j).Count(eq => eq);
double equivalence = (double)equalElements / Math.Max(a.Length, b.Length);
if (equivalence >= .6)
{
// 60%+ equivalent
}
Zip
: "对两个序列的对应元素应用指定的函数。"在这种情况下,我们将a
中的每个元素与b
中的相应元素进行比较,如果它们相等,则生成true
。例如,我们将1
与1
、2
与7
、3
与3
、4
与4
进行比较。然后计算遇到的等式的个数,并将该值存储到equalElements
中。最后,我们将其除以大序列中元素的总数,从而得到等价比。
假设您正在比较两个int列表(或数组,它是相同的),您可以这样计算list1
和list2
之间等效元素的百分比:
List<int> list1 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
List<int> list2 = new List<int>() { 3, 5, 8 };
var res = list1.Intersect(list2).ToList().Count();
float perc = (float)list1.Count() / res;