class_docstr: Generate random parameters that distributed uniformly.
  
  Args:
      *samplers: a list of tuple in a pattern of ``(factor, name, center, range)``, in which
          the factor can be a two-numbered tuple, or a ``(2,)`` shaped torch tensor. The name
          will be the corresponding key of the returning dict. The center and range must be
          both provided worked as a validator to the given factor.
  
  Returns:
      A dict of parameters to be passed for transformation according the number of samplers
      and the pointed returning name of each tuple.
          - ``name``: element-wise probabilities with a shape of (B,).
  
  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)``.
  
  Example:
      >>> _ = torch.manual_seed(44)
      >>> PlainUniformGenerator(
      ...     ((0., 1.), "factor_1", None, None),
      ...     (torch.tensor([-0.5, 0.5]), "factor_2", 0.1, (-1., 1.)),
      ... )(torch.Size([2]))
      {'factor_1': tensor([0.7196, 0.7307]), 'factor_2': tensor([ 0.3278, -0.3657])}
class_docstr_tok: ["Generate","random","parameters","that","distributed","uniformly",".","Args",":","*","samplers",":","a","list","of","tuple","in","a","pattern","of","``","(","factor",",","name",",","center",",","range",")","``",",","in","which","the","factor","can","be","a","two-numbered","tuple",",","or","a","``","(","2",",",")","``","shaped","torch","tensor",".","The","name","will","be","the","corresponding","key","of","the","returning","dict",".","The","center","and","range","must","be","both","provided","worked","as","a","validator","to","the","given","factor",".","Returns",":","A","dict","of","parameters","to","be","passed","for","transformation","according","the","number","of","samplers","and","the","pointed","returning","name","of","each","tuple",".","-","``","name","``",":","element-wise","probabilities","with","a","shape","of","(","B",",",")",".","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",")","``",".","Example",":",">",">",">","_","=","torch.manual_seed","(","44",")",">",">",">","PlainUniformGenerator","(","...","(","(","0.",",","1",".",")",",","``","factor_1","''",",","None",",","None",")",",","...","(","torch.tensor","(","[","-0.5",",","0.5","]",")",",","``","factor_2","''",",","0.1",",","(","-1.",",","1",".",")",")",",","...",")","(","torch.Size","(","[","2","]",")",")","{","'factor_1","'",":","tensor","(","[","0.7196",",","0.7307","]",")",",","'factor_2","'",":","tensor","(","[","0.3278",",","-0.3657","]",")","}"]
code: def forward(
      self, batch_shape: Tuple[int, ...], same_on_batch: bool = False
  ) -> Dict[str, Tensor]:
      batch_size = batch_shape[0]
      _common_param_check(batch_size, same_on_batch)
      _device, _dtype = _extract_device_dtype(
          [t for t, _, _, _ in self.samplers]
      )
  
      return {
          name: _adapted_rsampling(
              (batch_size,), dist, same_on_batch
          ).to(device=_device, dtype=_dtype)
          for name, dist in self.sampler_dict.items()
      }
  
file_path: kornia/kornia/augmentation/random_generator/_2d/plain_uniform.py
imports: from typing import Any, Dict, Optional, Tuple
  import torch
  from torch.distributions import Distribution
  from kornia.augmentation.random_generator.base import RandomGeneratorBase, UniformDistribution
  from kornia.augmentation.utils import _adapted_rsampling, _common_param_check, _range_bound
  from kornia.core import Tensor, as_tensor
  from kornia.utils.helpers import _extract_device_dtype
label_desc: Use image node_id 4 for calling the PlainUniformGenerator obj's underlying member method code with example usage: obj.forward(batch_shape, same_on_batch) and returns: unknown