code: def generate_evenly_distributed_data_sparse(dim = 2000,
                                              num_active = 40,
                                              num_samples = 1000):
    
    indices = [numpy.random.choice(dim, size = num_active, replace = False)
        for _ in range(num_samples)]
    data = SM32()
  
    data.reshape(0, dim)
    for row in indices:
      data.addRowNZ(row, [1]*num_active)
  
    # data.reshape(num_samples, dim)
    # for sample, datapoint in enumerate(indices):
    #   for index in datapoint:
    #     data[sample, index] = 1.
  
    return data
docs: Generates a set of data drawn from a uniform distribution.  The binning
    structure from Poirazi & Mel is ignored, and all (dim choose num_active)
    arrangements are possible.