generates all combinations of elements taken at a time
generates all permutations of elements
returns random combinations of elements taken at a time
returns generates a random permutation of elements from a finite set of elements,
returns random permutations of elements