code: def testSample(self):
      with self.cached_session():
          histograms = [[[0.2, 0.8], [0.4, 0.6]]]
          dist = categorical.Categorical(
              math_ops.log(histograms) - 50.0
          )
          n = 10000
          samples = dist.sample(n, seed=123)
          samples.set_shape([n, 1, 2])
          self.assertEqual(samples.dtype, dtypes.int32)
          sample_values = self.evaluate(samples)
          self.assertFalse(np.any(sample_values < 0))
          self.assertFalse(np.any(sample_values > 1))
          self.assertAllClose(
              [[0.2, 0.4]],
              np.mean(sample_values == 0, axis=0),
              atol=1e-2,
          )
          self.assertAllClose(
              [[0.8, 0.6]],
              np.mean(sample_values == 1, axis=0),
              atol=1e-2,
          )
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.distributions import categorical
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.ops.distributions import normal
  from tensorflow.python.platform import test
label_desc: Use image node_id 18 for calling the CategoricalTest obj's underlying member method code with example usage: obj.testSample() without return types