Python:random.seed不同,但randint生成相同的数字
我面临着一个非常独特的问题Python:random.seed不同,但randint生成相同的数字,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我面临着一个非常独特的问题 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.
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
我给了不同的种子编号,但输出给了我相同的编号。这不是每次都会发生,但我会随机面对这个问题。
任何帮助都将不胜感激
任何帮助都将不胜感激
由于您已经排除了PhoneMetadata
,调试的一个帮助可能是保存每次调用的随机状态,并在出现问题时检查它。要保存:
pickle.dump(random.getstate(), open(tempfile.mktemp(), "w"))
要恢复,请查看临时目录,按日期排序,然后通过(例如)恢复最新的
random.setstate(pickle.load(open("/tmp/tmpQMWOE4")))
然后看看是否可以使用此状态重现行为。如何处理
random.getstate()
?是不是PhoneMetatdata
设置了种子?不是,这里不是这样。无法在Python 2.7上复制(假设PhoneMetadata
实际上不相关)。你看到这个的确切版本是什么?