docs: public static INDArray generate(long[] shape, char order, Values values){
          switch (values){
              case RANDOM_UNIFORM:
                  return Nd4j.rand(Nd4j.createUninitialized(shape,order));
              case RANDOM_NORMAL:
                  return Nd4j.randn(Nd4j.createUninitialized(shape,order));
              case ONE_HOT:
                  Random r = new Random(Nd4j.getRandom().nextLong());
                  INDArray out = Nd4j.create(shape,order);
                  if(shape.length == 1){
                      out.putScalar(r.nextInt((int) shape[0]), 1.0);
                  } else if(shape.length == 2){
                      for( int i=0; i<shape[0]; i++ ){
                          out.putScalar(i, r.nextInt((int) shape[1]), 1.0);
                      }
                  } else if(shape.length == 3){
                      for( int i=0; i<shape[0]; i++ ){
                          for(int j=0; j<shape[2]; j++ ){
                              out.putScalar(i, r.nextInt((int) shape[1]), j, 1.0);
                          }
                      }
                  } else if(shape.length == 4){
                      for( int i=0; i<shape[0]; i++ ){
                          for(int j=0; j<shape[2]; j++ ){
                              for(int k=0; k<shape[3]; k++ ) {
                                  out.putScalar(i, r.nextInt((int) shape[1]), j, k, 1.0);
                              }
                          }
                      }
                  } else if(shape.length == 5){
                      for( int i=0; i<shape[0]; i++ ){
                          for(int j=0; j<shape[2]; j++ ){
                              for(int k=0; k<shape[3]; k++ ) {
                                  for( int l=0; l<shape[4]; l++ ) {
                                      out.putScalar(new int[]{i, r.nextInt((int) shape[1]), j, k, l}, 1.0);
                                  }
                              }
                          }
                      }
                  } else {
                      throw new RuntimeException("Not supported: rank 6+ arrays. Shape: " + Arrays.toString(shape));
                  }
                  return out;
              case ZEROS:
                  return Nd4j.create(shape,order);
              case ONES:
                  return Nd4j.createUninitialized(shape,order).assign(1.0);
              case BINARY:
                  return Nd4j.getExecutioner().exec(new BernoulliDistribution(Nd4j.createUninitialized(shape, order), 0.5));
              case INTEGER_0_10:
                  return Transforms.floor(Nd4j.rand(shape).muli(10), false);
              case INTEGER_0_100:
                  return Transforms.floor(Nd4j.rand(shape).muli(100), false);
              case INTEGER_0_1000:
                  return Transforms.floor(Nd4j.rand(shape).muli(1000), false);
              case INTEGER_0_10000:
                  return Transforms.floor(Nd4j.rand(shape).muli(10000), false);
              case INTEGER_0_100000:
                  return Transforms.floor(Nd4j.rand(shape).muli(100000), false);
              default:
                  throw new RuntimeException("Unknown enum value: " + values);
  
          }
      }