code: def test_gaussian_distribution_mixture_log():
      distribution_amplitudes = [1, 1, 1]
      means = [1, 2, 3]
      stds = [1, 1, 1]
      distribution_mins = [None for _ in range(len(means))]
      distribution_max = [None for _ in range(len(means))]
  
      hd = DistributionMixture.build_gaussian_mixture(
          distribution_amplitudes,
          means,
          stds,
          distribution_mins,
          distribution_max,
          use_logs=True,
      )
  
      samples = hd_rvs_many(hd)
  
      samples_median = np.median(samples)
      assert 1.5 < samples_median < 2.5
      samples_std = np.std(samples)
      assert 1.5 < hd.mean() < 2.5
      assert 1 < samples_std < 4
      assert 1 < hd.std() < 2
      assert abs(hd.pdf(-2.0) - 0.0) == 0
      assert abs(hd.pdf(1) - 1.0 / 3.0) < 0.1
      assert abs(hd.pdf(2) - 1.0 / 3.0) < 0.1
      assert abs(hd.pdf(3) - 1.0 / 3.0) < 0.1
      assert abs(hd.cdf(1) - 1.0 / 4.0) < 0.1
      assert abs(hd.cdf(2) - 2.0 / 4.0) < 0.1
      assert abs(hd.cdf(3) - 3.0 / 4.0) < 0.1
      assert hd.pdf(5.0) < 0.05
      assert hd.min() == 0
      assert hd.max() == np.inf
      assert abs(hd.mean() - 2.15) < 0.015
      assert abs(hd.std() ** 2 - hd.var()) < 0.001
      # Verify that hd mean and variance also correspond to mean and variance of sampling.
      assert abs(hd.mean() - np.mean(samples)) < 0.05
      assert abs(hd.var() - np.var(samples)) < 0.15
  
imports: import random
  from collections import Counter
  import numpy
  import pytest
  from neuraxle.hyperparams.distributions import *
label_desc: Use image node_id 18 for calling a global function with example usage: test_gaussian_distribution_mixture_log() without return types