class_docstr: Generate cutmix indexes and lambdas for a batch of inputs.
  
  Args:
      p (float): probability of applying cutmix.
      num_mix (int): number of images to mix with. Default is 1.
      beta (torch.Tensor, optional): hyperparameter for generating cut size from beta distribution.
          If None, it will be set to 1.
      cut_size (torch.Tensor, optional): controlling the minimum and maximum cut ratio from [0, 1].
          If None, it will be set to [0, 1], which means no restriction.
  
  Returns:
      params Dict[str, torch.Tensor]: parameters to be passed for transformation.
          - mix_pairs (torch.Tensor): element-wise probabilities with a shape of (num_mix, B).
          - crop_src (torch.Tensor): element-wise probabilities with a shape of (num_mix, B, 4, 2).
  
  Note:
      The generated random numbers are not reproducible across different devices and dtypes. By default,
      the parameters will be generated on CPU in float32. This can be changed by calling
      ``self.set_rng_device_and_dtype(device="cuda", dtype=torch.float64)``.
code: def make_samplers(
      self, device: torch.device, dtype: torch.dtype
  ) -> None:
      if self.beta is None:
          self._beta = tensor(1.0, device=device, dtype=dtype)
      else:
          self._beta = as_tensor(self.beta, device=device, dtype=dtype)
      if self.cut_size is None:
          self._cut_size = tensor(
              [0.0, 1.0], device=device, dtype=dtype
          )
      else:
          self._cut_size = as_tensor(
              self.cut_size, device=device, dtype=dtype
          )
  
      _joint_range_check(self._cut_size, "cut_size", bounds=(0, 1))
  
      self.beta_sampler = Beta(self._beta, self._beta)
      self.prob_sampler = Bernoulli(
          tensor(float(self.p), device=device, dtype=dtype)
      )
      self.rand_sampler = Uniform(
          tensor(0.0, device=device, dtype=dtype),
          tensor(1.0, device=device, dtype=dtype),
          validate_args=False,
      )
      self.pair_sampler = Uniform(
          tensor(0.0, device=device, dtype=dtype),
          tensor(1.0, device=device, dtype=dtype),
          validate_args=False,
      )
  
file_path: kornia/kornia/augmentation/random_generator/_2d/cutmix.py
imports: from typing import Dict, Optional, Tuple, Union
  import torch
  from torch.distributions import Bernoulli, Beta, Uniform
  from kornia.augmentation.random_generator.base import RandomGeneratorBase
  from kornia.augmentation.utils import _adapted_rsampling, _adapted_sampling, _common_param_check, _joint_range_check
  from kornia.core import as_tensor, tensor, zeros
  from kornia.geometry.bbox import bbox_generator
  from kornia.utils.helpers import _extract_device_dtype
label_desc: Use image node_id 3 for calling the CutmixGenerator obj's underlying member method code with example usage: obj.make_samplers(device, dtype) without return types