字节数组百分比相似度

时间:2015-04-10 01:14:50

标签: arrays vb.net byte similarity

我是VB.net的新手;我一直在寻找的是一种计算字节数组相似性的方法。我已经能够确定它们是否相等,但我还没有弄清楚如何计算它们的百分比相似程度。任何想法都表示赞赏。谢谢!利奥。

1 个答案:

答案 0 :(得分:0)

以下函数将两个Byte数组作为参数。如果数组的长度不同,则抛出异常。否则,它返回一个数组中元素的分数,该分数等于另一个数组中相同位置的元素。

Function PercentAlike(array1() As Byte, array2() As Byte) As Double
    If array1.Length <> array2.Length Then Throw New ArgumentException("Arrays must have the same length")
    Dim same As Integer
    For i As Integer = 0 To array1.Length - 1
        If array1(i) = array2(i) Then same += 1
    Next
    Return same / array1.Length
End Function

[添加以回应数组长度可能不同的评论] 如果需要计算百分比,即使数组的长度不同,也可以使用以下函数。它返回一个数组中元素的数量,它们等于另一个数组中相同位置的元素(忽略较长数组中的额外元素),作为较长数组中元素数量的一部分。

Function PercentAlike(array1() As Byte, array2() As Byte) As Double
    Dim same As Integer
    For i As Integer = 0 To Math.Min(array1.Length, array2.Length) - 1
        If array1(i) = array2(i) Then same += 1
    Next
    Return same / Math.Max(array1.Length, array2.Length)
End Function