code: def get_samples(
      self,
      fixed_features_values,
      feature_range,
      sampling_random_seed,
      sampling_size,
  ):
      # first get required parameters
      precisions = self.data_interface.get_decimal_precisions(
          output_type="dict"
      )
  
      if sampling_random_seed is not None:
          random.seed(sampling_random_seed)
  
      samples = []
      for feature in self.data_interface.feature_names:
          if feature in fixed_features_values:
              sample = [fixed_features_values[feature]] * sampling_size
          elif feature in self.data_interface.continuous_feature_names:
              low = feature_range[feature][0]
              high = feature_range[feature][1]
              sample = self.get_continuous_samples(
                  low,
                  high,
                  precisions[feature],
                  size=sampling_size,
                  seed=sampling_random_seed,
              )
          else:
              if sampling_random_seed is not None:
                  random.seed(sampling_random_seed)
              sample = random.choices(
                  feature_range[feature], k=sampling_size
              )
  
          samples.append(sample)
      samples = pd.DataFrame(
          dict(zip(self.data_interface.feature_names, samples))
      )
      return samples
  
file_path: DiCE/dice_ml/explainer_interfaces/dice_random.py
imports: import random
  import timeit
  import numpy
  import pandas
  from dice_ml import diverse_counterfactuals
  from dice_ml.constants import ModelTypes
  from dice_ml.explainer_interfaces.explainer_base import ExplainerBase
label_desc: Use image node_id 3 for calling the DiceRandom obj's underlying member method code with example usage: obj.get_samples(fixed_features_values, feature_range, sampling_random_seed, sampling_size) and returns: samples