code: public INDArray entropy(INDArray data){
  
          INDArray data2 =
                      Nd4j.getExecutioner().exec(new GaussianDistribution(Nd4j.create(numTables, inDimension), radius));
  
          INDArray norms = Nd4j.norm2(data2.dup(), -1);
  
          Preconditions.checkState(norms.rank() == 1 && norms.size(0) == numTables, "Expected norm2 to have shape [%s], is %ndShape", norms.size(0), norms);
  
          data2.diviColumnVector(norms);
          data2.addiRowVector(data);
          return data2;
      }
docs: This picks uniformaly distributed random points on the unit of a sphere using the method of:
  
  An efficient method for generating uniformly distributed points on the surface of an n-dimensional sphere
  JS Hicks, RF Wheeling - Communications of the ACM, 1959
  @param data a query to generate multiple probes for
  @return `numTables`