class_docstr: Base class for samplers producing (possibly QMC) N(0,1) samples.
  
  Subclasses must implement the `_construct_base_samples` method.
class_docstr_tok: ["Base","class","for","samplers","producing","(","possibly","QMC",")","N","(","0,1",")","samples",".","Subclasses","must","implement","the","`","_construct_base_samples","`","method","."]
docstr: Draws MC samples from the posterior.
  
  Args:
      posterior: The posterior to sample from.
  
  Returns:
      The samples drawn from the posterior.
docstr_tok: ["Draws","MC","samples","from","the","posterior",".","Args",":","posterior",":","The","posterior","to","sample","from",".","Returns",":","The","samples","drawn","from","the","posterior","."]
code: def forward(self, posterior: Posterior) -> Tensor:
      r"""Draws MC samples from the posterior.
  
      Args:
          posterior: The posterior to sample from.
  
      Returns:
          The samples drawn from the posterior.
      """
      self._construct_base_samples(posterior=posterior)
      samples = posterior.rsample_from_base_samples(
          sample_shape=self.sample_shape,
          base_samples=self.base_samples.expand(
              self._get_extended_base_sample_shape(posterior=posterior)
          ),
      )
      return samples
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  import torch
  from botorch.exceptions import UnsupportedError
  from botorch.posteriors import Posterior
  from botorch.posteriors.higher_order import HigherOrderGPPosterior
  from botorch.posteriors.multitask import MultitaskGPPosterior
  from botorch.posteriors.transformed import TransformedPosterior
  from botorch.sampling.base import MCSampler
  from botorch.utils.sampling import draw_sobol_normal_samples, manual_seed
  from torch import Tensor
  from torch.quasirandom import SobolEngine
label_desc: Use image node_id 1 for calling the NormalMCSampler obj's underlying member method code with example usage: obj.forward(posterior) and returns: samples