code: def dirichlet(
      alpha: Union[tf.Tensor, tf.Variable, float, Sequence[float]],
      /,
      *,
      size: Optional[Union[ivy.NativeShape, Sequence[int]]] = None,
      out: Optional[Union[tf.Tensor, tf.Variable]] = None,
      seed: Optional[int] = None,
      dtype: Optional[tf.Tensor] = None,
  ) -> Union[tf.Tensor, tf.Variable]:
      size = size if size is not None else len(alpha)
  
      if dtype is None:
          dtype = tf.float64
      else:
          dtype = dtype
      if seed is not None:
          tf.random.set_seed(seed)
      return tf.cast(
          tfd.Dirichlet(
              concentration=alpha,
              validate_args=False,
              allow_nan_stats=True,
              force_probs_to_zero_outside_support=False,
              name="Dirichlet",
          ).sample(size),
          dtype=dtype,
      )
  
file_path: ivy/ivy/functional/backends/tensorflow/sub_backends/tf_probability/experimental/random.py
imports: from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.ivy.random import _check_bounds_and_get_shape, _check_shapes_broadcastable
  import tensorflow_probability
  from tensorflow_probability import distributions
  import tensorflow
  from tensorflow.python.framework.dtypes import DType
  from typing import Optional, Sequence, Union
  from ....None import backend_version
  import ivy
label_desc: Use image node_id 4 for calling a global function with example usage: dirichlet() and returns: tf