docstr: ...Test that random number generator creates independant
  samples in a multithreaded environment
docstr_tok: ["...","Test","that","random","number","generator","creates","independant","samples","in","a","multithreaded","environment"]
code: def test_parallel_create_independant_random(self):
      """...Test that random number generator creates independant
      samples in a multithreaded environment
      """
  
      for thread_type in self.thread_types:
          samples = self._generate_samples_in_parallel(
              parallelization_type=thread_type
          )
  
          # We check that we do not have any lines that is identical to the
          # one following
          following_samples_are_different = np.prod(
              np.linalg.norm(samples[:-1] - samples[1:], axis=1) > 0
          )
          self.assertEqual(
              following_samples_are_different,
              1,
              "Two samples generated in parallel are identical",
          )
  
          # We check that our generated samples are not correlated
          for (i, sample_i), (j, sample_j) in itertools.product(
              enumerate(samples), enumerate(samples)
          ):
              if i != j:
                  corr_coeff = stats.pearsonr(sample_i, sample_j)[0]
                  self.assertLess(np.abs(corr_coeff), 0.1)
  
imports: import unittest
  import multiprocessing
  from multiprocessing.pool import Pool
  import itertools
  import numpy
  import threading
  from scipy import stats
  from tick.random import test_uniform, test_gaussian, test_poisson, test_exponential, test_uniform_int, test_discrete, test_uniform_threaded
label_desc: Use image node_id 13 for calling the Test obj's underlying member method code with example usage: obj.test_parallel_create_independant_random() without return types