code: def _execute_map(cls, ctx, op):
      (x,), device_id, xp = as_same_device(
          [ctx[c.key] for c in op.inputs],
          device=op.device,
          ret_extra=True,
      )
  
      out_chunk = op.outputs[0]
      reduce_size = op.reduce_size
      with device(device_id):
          rs = xp.random.RandomState(op.seed)
          to_reduce_idxes = rs.randint(
              reduce_size, size=x.shape[op.axis]
          )
          for to_reduce_idx in range(reduce_size):
              reduce_idx = (
                  out_chunk.index[: op.axis]
                  + (to_reduce_idx,)
                  + out_chunk.index[op.axis + 1 :]
              )
              slc = (slice(None),) * op.axis + (
                  to_reduce_idxes == to_reduce_idx,
              )
              ctx[out_chunk.key, reduce_idx] = x[slc]
  
imports: import itertools
  from numbers import Integral
  import numpy
  from ...None import opcodes
  from ...core.operand import OperandStage
  from ...serialization.serializables import KeyField, Int32Field
  from ..operands import TensorOperandMixin, TensorShuffleProxy
  from ..utils import gen_random_seeds, validate_axis
  from ..datasource import tensor
  from ..array_utils import as_same_device, device
  from .core import TensorRandomMapReduceOperand
label_desc: Use image node_id 4 for calling the TensorPermutation obj's underlying member method code with example usage: obj._execute_map(cls, ctx, op) without return types