private int numDimensions;
private int numProjections;
private boolean initialized = false;
static List<Vector> generateBasis(int numDimensions, int numProjections) {
final DoubleFunction random = Functions.random();
List<Vector> basisVectors = Lists.newArrayList();
for (int i = 0; i < numProjections; ++i) {
Vector basisVector = new DenseVector(numDimensions);
basisVector.assign(random);
basisVector.normalize();