class_docstr: A test iterator.
  
  This returns batch from a random selected dataloader, until
  all dataloaders are exhausted.
class_docstr_tok: ["A","test","iterator",".","This","returns","batch","from","a","random","selected","dataloader",",","until","all","dataloaders","are","exhausted","."]
code: def __next__(self) -> Dict[str, Any]:
      if len(self.remaining_dataloaders) == 0:
          raise StopIteration
  
      cur_dataloader = random.choice(self.remaining_dataloaders)
      try:
          return {
              cur_dataloader: next(
                  self.individual_iterators[cur_dataloader]
              )
          }
      except StopIteration:
          self.remaining_dataloaders.remove(cur_dataloader)
  
          if len(self.remaining_dataloaders) == 0:
              raise StopIteration
  
          return self.__next__()
  
imports: import random
  import unittest
  from collections import Counter
  from typing import Any, cast, Dict, Iterable, Iterator, List, Mapping, Union
  import torch
  from torch.utils.data import DataLoader, Dataset
  from torchtnt.utils.data.iterators import AllDatasetBatches, DataIterationStrategy, InOrder, MultiIterator, RandomizedBatchSampler, RoundRobin, StoppingMechanism
  from torchtnt.utils.data.multi_dataloader import MultiDataLoader
label_desc: Use image node_id 2 for calling the CustomRandomIterator obj's underlying member method code with example usage: obj.__next__() and returns: dict, self