code: def poisson(
      lam: Union[float, ivy.Array, ivy.NativeArray],
      *,
      shape: Optional[Union[ivy.Shape, ivy.NativeShape]] = None,
      device: Optional[Union[ivy.Device, ivy.NativeDevice]] = None,
      dtype: Optional[Union[ivy.Dtype, ivy.NativeDtype]] = None,
      seed: Optional[int] = None,
      fill_value: Optional[Union[int, float]] = 0,
      out: Optional[ivy.Array] = None,
  ) -> ivy.Array:
      """Draws samples from a poisson distribution.
  
      Parameters
      ----------
      lam
          Rate parameter(s) describing the poisson distribution(s) to sample.
          It must have a shape that is broadcastable to the requested shape.
      shape
          If the given shape is, e.g '(m, n, k)', then 'm * n * k' samples are drawn.
          (Default value = 'None', where 'ivy.shape(lam)' samples are drawn)
      device
          device on which to create the array 'cuda:0', 'cuda:1', 'cpu' etc.
          (Default value = None).
      dtype
          output array data type. If ``dtype`` is ``None``, the output array data
          type will be the default floating-point data type. Default ``None``
      seed
          A python integer. Used to create a random seed distribution.
      fill_value
          if lam is negative, fill the output array with this value
          on that specific dimension.
      out
          optional output array, for writing the result to. It must have a shape that the
          inputs broadcast to.
  
      Returns
      -------
       ret
          Drawn samples from the poisson distribution
  
      Examples
      --------
      >>> lam = [1.0, 2.0, 3.0]
      >>> ivy.poisson(lam)
      ivy.array([1., 4., 4.])
  
      >>> lam = [1.0, 2.0, 3.0]
      >>> ivy.poisson(lam, shape = (2,3))
      ivy.array([[0., 2., 2.],
                 [1., 2., 3.]])
      """
      return ivy.current_backend(lam).poisson(
          lam,
          shape=shape,
          device=device,
          dtype=dtype,
          seed=seed,
          fill_value=fill_value,
          out=out,
      )
  
file_path: ivy/ivy/functional/ivy/experimental/random.py
imports: from typing import Optional, Union, Sequence
  import ivy
  from ivy.func_wrapper import handle_out_argument, to_native_arrays_and_back, inputs_to_native_shapes, handle_nestable, infer_dtype, handle_device, handle_backend_invalid
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 4 for calling a global function with example usage: poisson(lam) and returns: ivy