字节数组百分比相似度

Byte array percentage similarity

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

以下函数以两个字节数组作为参数。如果数组长度不同,则抛出异常。否则,它 returns 一个数组中的元素与另一个数组中相同位置的元素相等的分数。

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

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

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