def returnFalseNegatives(kw, noisePct, n, theta):
  """
  Generate a weight vector W, with kw non-zero components. Generate 1000
  noisy versions of W and return the match statistics. Noisy version of W is
  generated by randomly setting noisePct of the non-zero components to zero.

  :param kw: k for the weight vectors
  :param noisePct: percent noise, from 0 to 1
  :param n:  dimensionality of input vector
  :param theta: threshold for matching after dot product

  :return: percent that matched, number that matched, total match comparisons
  """

  W = getSparseTensor(kw, n, 1, fixedRange=1.0 / kw)

  # Get permuted versions of W and see how many match
  m2 = 10
  inputVectors = getPermutedTensors(W, kw, n, m2, noisePct)
  dot = inputVectors.matmul(W.t())

  numMatches = ((dot >= theta).sum()).item()
  pctMatches = numMatches / float(m2)

  return pctMatches, numMatches, m2