Advertisement
Guest User

Untitled

a guest
Mar 30th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. def Binary_Matrix_Rank_Test (data, data_len):
  2.     M = Q = 3
  3.     # Число матриц
  4.     N = data_len / (M * Q)
  5.     pm = [0.2888, 0.5776, 0.1284, 0.005, 0]
  6.    
  7.     matrix = []
  8.     matrix_rank = []
  9.     fm = []
  10.  
  11.     data = data >> (data_len % (M * Q))
  12.     for i in range(N):
  13.         array = []
  14.         x = data % (2 ** (M * Q))
  15.         data >>= (M * Q)
  16.         data_len -= M * Q
  17.  
  18.         for j in range (M * Q):
  19.             array.append(x % 2)
  20.             x /= 2
  21.         matrix.append(sympy.Matrix(M, Q, array))
  22.  
  23.         matrix_rank.append(matrix[i].rank())
  24.  
  25.     for i in range(M + 1):
  26.         fm.append(0)
  27.  
  28.     for rank in matrix_rank:
  29.         fm[rank] += 1
  30.  
  31.     p = 0.005
  32.     for i in range(0, M + 1):
  33.         if i == M:
  34.             p = pm[0]
  35.         elif i == M - 1:
  36.             p = pm[1]
  37.         elif i == M - 2:
  38.             p = pm[2]
  39.         elif i == M - 3:
  40.             p = pm[3]
  41.            
  42.         fm[i] = float(((fm[i] - N * p) ** 2)) / (N * p)
  43.        
  44.     xi = 0
  45.     xi = sum(fm)
  46.  
  47.     result = sympy.uppergamma(1, float(xi)/2)
  48.     return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement