code: def test_random_generator_tf(
      self, noise_mean=1.0, noise_std=1.0, samples=1000, tolerance=0.15
  ):
      g = tree_aggregation.GaussianNoiseGenerator(
          noise_std, specs=tf.TensorSpec([]), seed=2020
      )
      gstate = g.initialize()
  
      @tf.function
      def return_noise(state):
          value, state = g.next(state)
          return noise_mean + value, state
  
      noise_values = []
      for _ in range(samples):
          value, gstate = return_noise(gstate)
          noise_values.append(value)
      noise_values = tf.stack(noise_values)
      self.assertAllClose(
          [
              tf.math.reduce_mean(noise_values),
              tf.math.reduce_std(noise_values),
          ],
          [noise_mean, noise_std],
          rtol=tolerance,
      )
  
imports: import math
  import random
  from absl.testing import parameterized
  import tensorflow
  from tensorflow_privacy.privacy.dp_query import tree_aggregation
label_desc: Use image node_id 2 for calling the GaussianNoiseGeneratorTest obj's underlying member method code with example usage: obj.test_random_generator_tf(noise_mean, noise_std, samples, tolerance) and returns: unknown,  state