class_docstr: Tophat prior as it used in the original spearmint code.
  
  Parameters
  ----------
  lower_bound : float
      Lower bound of the prior. In original scale.
  upper_bound : float
      Upper bound of the prior. In original scale.
  seed : int, defaults to 0
code: def _sample_from_prior(self, n_samples: int) -> np.ndarray:
      if np.ndim(n_samples) != 0:
          raise ValueError(
              "The argument `n_samples` needs to be a scalar (is %s)."
              % n_samples
          )
  
      if n_samples <= 0:
          raise ValueError(
              "The argument `n_samples` needs to be positive (is %d)."
              % n_samples
          )
  
      p0 = np.exp(
          self._rng.uniform(
              low=self._log_min, high=self._log_max, size=(n_samples,)
          )
      )
  
      return p0
  
imports: from __future__ import annotations
  from typing import Any
  import warnings
  import numpy
  from smac.model.gaussian_process.priors.abstract_prior import AbstractPrior
label_desc: Use image node_id 4 for calling the TophatPrior obj's underlying member method code with example usage: obj._sample_from_prior(n_samples) and returns: p0