code: def shuffle(
      x: paddle.Tensor,
      axis: Optional[int] = 0,
      /,
      *,
      seed: Optional[int] = None,
      out: Optional[paddle.Tensor] = None,
  ) -> paddle.Tensor:
      if seed:
          _ = paddle.seed(seed)
      # Use Paddle's randperm function to generate shuffled indices
      indices = paddle.randperm(x.ndim, dtype="int64")
      if paddle.is_complex(x):
          shuffled_real = paddle.index_select(
              x.real(), indices, axis=axis
          )
          shuffled_imag = paddle.index_select(
              x.imag(), indices, axis=axis
          )
          return paddle.complex(shuffled_real, shuffled_imag)
      return paddle.index_select(x, indices, axis=axis)
  
file_path: ivy/ivy/functional/backends/paddle/random.py
imports: import paddle
  import ivy.functional.backends.paddle
  from typing import Optional, Union, Sequence
  import ivy
  from paddle.device import core
  from ivy.functional.ivy.random import _check_bounds_and_get_shape, _randint_check_dtype_and_bound, _check_valid_scale
  from ivy.func_wrapper import with_unsupported_device_and_dtypes, with_supported_device_and_dtypes, with_unsupported_dtypes
  from .None import backend_version
label_desc: Use image node_id 6 for calling a global function with example usage: shuffle() and returns: paddle, paddle