I have a Python function that allows both of those:
def randomString(alphabet, length):
....
randomHex = partialApply(randomString, alphabet="0123456789ABCDEF")
randomBase32 = partialApply(randomString, "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")
random10Char = partialApply(randomString, length=10)
random4Char = partialApply(randomString, length=4)
randomHexByte = partialApply(randomString, "0123456789ABCDEF", 2)
Comes in handy occasionally.