Python: random.seed отличается, но randint генерирует одинаковое число - PullRequest
0 голосов
/ 23 мая 2018

Я столкнулся с очень уникальной проблемой.

random.seed(123)

rg = PhoneMetadata.metadata_for_region(random.choice(('US', 'FR', 'IN', 'GB')))
pl = rg.mobile.possible_length
cc = rg.country_code

print(''.join(str(random.randint(0, 9)) for _ in range(pl[0])))
--3982597919

random.seed(345)

rg = PhoneMetadata.metadata_for_region(random.choice(('US', 'FR', 'IN', 'GB')))
pl = rg.mobile.possible_length
cc = rg.country_code

print(''.join(str(random.randint(0, 9)) for _ in range(pl[0])))
--3982597919

Я даю другой номер семян, но на выходе получаю одинаковое число.Это происходит не каждый раз, но я сталкиваюсь с этой проблемой случайно.

Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 23 мая 2018

Любая помощь будет принята с благодарностью.

Поскольку вы уже исключили PhoneMetadata, одной из справок по отладке может быть сохранение случайного состояния при каждом вызове и проверка его, есливсе идет не такЧтобы сохранить:

pickle.dump(random.getstate(), open(tempfile.mktemp(), "w"))

Чтобы восстановить, взгляните на временный каталог, отсортируйте по дате и восстановите последнюю версию, скажем,

random.setstate(pickle.load(open("/tmp/tmpQMWOE4")))

, а затем посмотрите, сможете ли вы воспроизвестиповедение с этим состоянием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...