'Indices 1:nexamples, randomized, in 2D form of
shape = (nexamples / batch_size) x batch_size.  The remainder
is managed by drawing randomly from 1:nexamples.
Args:
nexamples: number of examples to randomize
batch_size: number of elements in batch
Returns:
The randomized, properly shaped indicies.'

@staticmethod
def randomize_example_idxs_mod_batch_size(nexamples, batch_size):

    assert (nexamples > batch_size), 'Problems'
    bmrem = (batch_size - (nexamples % batch_size))
    bmrem_examples = []
    if (bmrem < batch_size):
        bmrem_examples = np.random.choice(range(nexamples), size=bmrem, replace=False)
    example_idxs = (range(nexamples) + list(bmrem_examples))
    mixed_example_idxs = np.random.permutation(example_idxs)
    example_idxs_e_x_edivb = np.reshape(mixed_example_idxs, [(-1), batch_size])
    return (example_idxs_e_x_edivb, bmrem)
