code: def type_inference(self):
      if any_symbolic(self.shape.shape):
          # We can't infer any shape if shape has variable length.
          return types.tensor(types.fp32, (get_new_variadic_symbol(),))
  
      # shape has fixed length here.
      if self.shape.sym_val is None:
          shape = tuple(
              [get_new_symbol() for _ in range(self.shape.shape[0])]
          )
          return types.tensor(types.fp32, shape)
  
      return types.tensor(
          types.fp32, tuple(self.shape.sym_val.tolist())
      )
  
imports: from coremltools.converters.mil.mil.types.symbolic import any_symbolic
  from coremltools.converters.mil.mil import get_new_symbol, get_new_variadic_symbol
  from ._op_reqs import *
label_desc: Use image node_id 2 for calling the RandomDistribution obj's underlying member method code with example usage: obj.type_inference() and returns: types, types, types