code: def _random_weights(n_features, lam, lam_perturb, prng):
      
      weights = np.zeros((n_features, n_features))
      n_off_diag = int((n_features ** 2 - n_features) / 2)
      berns = prng.binomial(1, 0.5, size=n_off_diag)
      vals = np.zeros(berns.shape)
      vals[berns == 0] = 1. * lam * lam_perturb
      vals[berns == 1] = 1. * lam / lam_perturb
      weights[np.triu_indices(n_features, k=1)] = vals
      weights[weights < 0] = 0
      weights = weights + weights.T
      return weights
docs: Generate a symmetric random matrix with zeros along the diagnoal and
      non-zero elements take the value {lam * lam_perturb, lam / lam_perturb}
      with probability 1/2.