code: def _disjoint_sample(xs, n, size, rng):
      # shuffle the indices & split into partitions
      rng.shuffle(xs)
  
      # convert each partition into a split
      for i in range(n):
          start = i * size
          test = xs[start : start + size]
          train = np.concatenate((xs[:start], xs[start + size :]))
          yield TTPair(train, test)
  
imports: from collections import namedtuple
  import logging
  from abc import ABC, abstractmethod
  import numpy
  import pandas
  from seedbank import numpy_rng
label_desc: Use image node_id 3 for calling a global function with example usage: _disjoint_sample(xs, n, size, rng) without return types