2 つの配列を比較して等価パーセンテージを計算する方法が必要なので、等価パーセンテージが (たとえば 60%) を超えた場合は、いくつかのアクションを実行します。使用言語は C# .NET 4.0 です。
1361 次
2 に答える
2
質問の定義が不十分なので、大まかな仮定をいくつか取っていますが、要素の等価性に基づいて等価性を測定する実装例を次に示します。
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
: 「指定された関数を 2 つのシーケンスの対応する要素に適用します。」a
この場合、 の各要素を の対応する要素と比較し、それらが等しいかどうかをb
生成します。true
たとえば、 、、、、と比較し1
ます。次に、遭遇した等号の数を数え、この値を に格納します。最後に、これをより大きなシーケンスの要素の総数で割ると、当量比が得られます。1
2
7
3
3
4
4
equalElements
于 2014-06-17T20:08:16.533 に答える
-1
2 つの 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;
于 2014-06-17T20:08:02.720 に答える