def METHOD_NAME(dataset_x, dataset_y, size, seed=None):
    """
    Randomly splits the dataset into two parts for cross-validation.
    Parameters
    ----------
    dataset_x : ht.DNDarray
        data vectors, required
    dataset_y : ht.DNDarray
        labels for dataset_x, required
    size : int
        the size of the split to create
    seed: int, optional
        seed for the random generator, allows deterministic testing
    Returns
    ----------
    fold_x : ht.DNDarray
        DNDarray of shape (size,) containing data vectors from dataset_x
    fold_y : ht.DNDarray
        DNDarray of shape(size,) containing labels from dataset_y
    verification_x : ht.DNDarray
        DNDarray of shape(len(dataset_x - size),) containing all items from dataset_x not in fold_x
    verification_y : ht.DNDarray
        DNDarray of shape(len(dataset_y - size),) containing all items from dataset_y not in fold_y
    """
    assert len(dataset_y) == len(dataset_x)
    assert size < len(dataset_x)
    data_length = len(dataset_x)
    if seed:
        random.seed(seed)
    indices = [i for i in range(data_length)]
    random.shuffle(indices)
    data_indices = ht.array(indices[0:size], split=0)
    verification_indices = ht.array(indices[size:], split=0)
    fold_x = dataset_x[data_indices]
    fold_y = dataset_y[data_indices]
    verification_y = dataset_y[verification_indices]
    verification_x = dataset_x[verification_indices]
    # Balance arrays
    fold_x.balance_()
    fold_y.balance_()
    verification_y.balance_()
    verification_x.balance_()
    return fold_x, fold_y, verification_x, verification_y