code: def random(self, shape, tf_fn, kwargs):
      
      slice_shape = self.slice_shape(shape)
      op_seed = random.random()
      def my_fn(pnum):
        # seeds are necessary to make sure that slices that should have the
        # same values actually do have the same values.
        seed = hash("%s,%s" % (op_seed, self.slice_begin(shape, pnum)))
        return tf_fn(slice_shape, seed=seed, **kwargs)
      return self.slicewise(my_fn, self.laid_out_pnum())
docs: Call a random tf operation (e.g. tf.random.uniform).
  
      Args:
        shape: a Shape
        tf_fn: a function such as tf.random.uniform
        kwargs: kwargs to pass to tf_fn, except for seed
  
      Returns:
        a LaidOutTensor