J'ai fait un programme simple en Python pour générer une chaîne aléatoire avec 5 numéros dans ce:générateur chaîne aléatoire python
import random
numcount = 5
fstring = ""
for num in range(19): #strings are 19 characters long
if random.randint(0, 1) == 1:
x = random.randint(1, 26)
x += 96
fstring += (chr(x).upper())
elif not numcount == 0:
x = random.randint(0, 9)
fstring += str(x)
numcount -= 1
print(fstring)
Pas trop dur, non? Sauf pour une chose incroyablement étrange: les cordes qu'elle renvoie sont d'une longueur aléatoire. J'ai couru le code à plusieurs reprises, et voici quelques-uns de mes résultats:
>>> ================================ RESTART ================================
>>>
VQZ99HA5DER0CES4
>>> ================================ RESTART ================================
>>>
05PS0T86LOZS
>>> ================================ RESTART ================================
>>>
E2QX8296XK
>>> ================================ RESTART ================================
>>>
M5X9K457QDNBPX
Je ne peux pas comprendre ce qui se passe ... Quelqu'un peut-il me diriger dans la bonne direction?
Sans faire une analyse au niveau profond, vous pouvez voir que, parfois, les deux ifs échoueront (conduisant à une fstring plus courte) et parfois, aléatoirement, ils ne le feront pas. – Malvolio
Parfois, * très rarement *, ils ne le feront pas. En moyenne, vous obtiendrez 9.5 itérations dans la branche numérique, et seulement 5 feront n'importe quoi. Assez peu probable que vous obteniez seulement 5 itérations ou moins. –