Думаю, отличное начало для поста о модуле random.
Дело в том, что этот модуль хоть и подразумевает генерацию случайных чисел, на деле выдает псевдослучайные значения.
Всё дело в том, что за его основу взят алгоритм Mersenne Twister — он не использует "настоящую" энтропию (энтропия- это по сути неопределенность, то что и считается случайностью), а рассчитывает числа по формуле.
Его внутреннее состояние — это массив из 624 чисел, каждое по 32 бита. И если тебе каким-то образом удалось узнать этот массив, ты можешь:
-полностью восстановить генератор,
-и предсказать все будущие значения.
Поэтому использовать random для генерации ключей, токенов, паролей — опасно. Он не предназначен для криптографических задач.
"Хочешь безопасных паролей- используй secrets, random погубит тебя" — примета такая