字节数组百分比相似性



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

以下函数采用两个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

最新更新