code: def perform(self, node, inp, out, params):
      rstate, size = inp
      o_rstate, o_sample = out
      n_elements = 1
      for s in size:
          n_elements *= s
      if n_elements > M1:
          # The limit is on the C and GPU code. This perform don't
          # have this limit.  But to have all of them behave the
          # same (and have DebugMode don't use too much memory for
          # some rng_mrg tests) I also add this limit here.
          raise ValueError(
              "rng_mrg does not support more then (2**31 -1) samples"
          )
  
      rstate = np.asarray(rstate)  # bring state from GPU if necessary
      if not self.inplace:
          rstate = rstate.copy()
  
      n_streams, _ = rstate.shape
  
      rval = np.zeros(n_elements, dtype=self.output_type.dtype)
      if rval.dtype == "float16":
          mask = 0x7FFF
          offset = 1
          NORM = np.float16(3.0458e-05)
      elif rval.dtype == "float32":
          mask = 0xFFFFFFFF
          offset = 0
          NORM = np.float32(4.6566126e-10)
      elif rval.dtype == "float64":
          mask = 0xFFFFFFFF
          offset = 0
          NORM = 4.656612873077392578125e-10  # 1./2^31
  
      err_orig = np.seterr(over="ignore")
      try:
          for i in xrange(n_elements):
              sample = mrg_next_value(
                  rstate[i % n_streams],
                  rstate[i % n_streams],
                  NORM=NORM,
                  mask=mask,
                  offset=offset,
              )
              rval[i] = sample
      finally:
          np.seterr(**err_orig)
  
      # send to GPU if necessary
      o_rstate[0] = node.outputs[0].type.filter(rstate)
      o_sample[0] = node.outputs[1].type.filter(rval.reshape(size))
  
imports: from __future__ import absolute_import, print_function, division
  import warnings
  import numpy
  from six import integer_types, string_types
  from six.moves import xrange
  import theano
  from theano import Op, Apply, shared, config, Variable
  from theano import gradient, function
  from theano.gradient import undefined_grad
  from theano import tensor
  from theano.tensor import TensorType, as_tensor_variable, get_vector_length, cast, opt, scal
  from theano.compile import optdb
  from theano.gof import local_optimizer, ParamsType
  from theano.scalar import bool, int32
  from .None import multinomial
label_desc: Use image node_id 3 for calling the mrg_uniform obj's underlying member method code with example usage: obj.perform(node, inp, out, params) without return types