Vorbedingungen
- Python3
- Eine ID darf aus den einzelnen Zeichen string.ascii_uppercase + string.digits bestehen. Das sind 36 Zeichen.
- Ich muss eine vorgegebene Anzahl an eindeutigen IDs erzeugen. Sagen wir `N` Stück.
- Wie viele Zeichen, aus dem gegebenen Zeichenvorrat, muss die ID enthalten, um in der Gesamtmenge `N` noch eindeutig sein zu können?
Beim Weiterlesen, hab ich versucht es zu berechnen.
Ist das ein guter (pythonischer und performanter) Weg, oder würdet ihr es anders machen?
Code: Alles auswählen
#!/usr/bin/env python3
import sys
import string
import math
def unique_combinations(chars, length):
# solution supported by
# https://medium.com/i-math/combinations-permutations-fa7ac680f0ac
return (
math.factorial(len(chars)) /
(math.factorial(length) *
math.factorial((len(chars)-length)))
)
if __name__ == '__main__':
# character set for ID
chars = string.ascii_uppercase + string.digits
# number of needed uniqe IDs (e.g. cases in a data file)
N = 100000
length = 0
while True:
length += 1
combs = unique_combinations(chars, length)
if combs > N:
print(f'ID must be {length} chars long.')
sys.exit()