class_docstr: This class specifies the generation algorithm for a Sobol generator.
  
  As Sobol does not make use of a model, it does not implement
  the fit or predict methods.
  
  Attributes:
      init_position: The initial state of the Sobol generator.
          Starts at 0 by default.
      scramble: If True, permutes the parameter values among
          the elements of the Sobol sequence. Default is True.
      See base `RandomModel` for a description of remaining attributes.
class_docstr_tok: ["This","class","specifies","the","generation","algorithm","for","a","Sobol","generator",".","As","Sobol","does","not","make","use","of","a","model",",","it","does","not","implement","the","fit","or","predict","methods",".","Attributes",":","init_position",":","The","initial","state","of","the","Sobol","generator",".","Starts","at","0","by","default",".","scramble",":","If","True",",","permutes","the","parameter","values","among","the","elements","of","the","Sobol","sequence",".","Default","is","True",".","See","base","`","RandomModel","`","for","a","description","of","remaining","attributes","."]
docstr: Generate n samples.
  
  Args:
      n: Number of samples to generate.
      tunable_d: The dimension of the generated samples. This must
          match the tunable parameters used while initializing the
          Sobol engine.
  
  Returns:
      A numpy array of samples of shape `(n x tunable_d)`.
docstr_tok: ["Generate","n","samples",".","Args",":","n",":","Number","of","samples","to","generate",".","tunable_d",":","The","dimension","of","the","generated","samples",".","This","must","match","the","tunable","parameters","used","while","initializing","the","Sobol","engine",".","Returns",":","A","numpy","array","of","samples","of","shape","`","(","n","x","tunable_d",")","`","."]
code: def _gen_samples(self, n: int, tunable_d: int) -> np.ndarray:
      """Generate n samples.
  
      Args:
          n: Number of samples to generate.
          tunable_d: The dimension of the generated samples. This must
              match the tunable parameters used while initializing the
              Sobol engine.
  
      Returns:
          A numpy array of samples of shape `(n x tunable_d)`.
      """
      if tunable_d == 0:
          return np.zeros((n, 0))
      if self.engine is None:
          raise ValueError(
              "Sobol Engine must be initialized before candidate generation."
          )
      return not_none(self.engine).draw(n, dtype=torch.double).numpy()
  
file_path: Ax/ax/models/random/sobol.py
imports: from typing import Any, Callable, Dict, List, Optional, Tuple
  import numpy
  import torch
  from ax.models.base import Model
  from ax.models.model_utils import tunable_feature_indices
  from ax.models.random.base import RandomModel
  from ax.models.types import TConfig
  from ax.utils.common.docutils import copy_doc
  from ax.utils.common.typeutils import not_none
  from torch.quasirandom import SobolEngine
label_desc: Use image node_id 6 for calling the SobolGenerator obj's underlying member method code with example usage: obj._gen_samples(n, tunable_d) and returns: not_none, np