我一直在思考一个有趣的问题,想找出解决方法。
我想找到一个生成相同随机数的seed
,特别是我想找到一个种子,其中第一个random.getrandombits(32)将等于函数3x + 1
中的某个值,域1<=x<=99
。
例如:我想找到一个种子i
,其中的某个索引为j
random.getrandombits(32) == (the 3j + 1th generation of) random.getrandbits(32)
我已经尝试在python中对其进行暴力破解,但是效果并不理想。这是我到目前为止的脚本:
import random, sys
# Find seed in the range of 1-1,100000000
for i in range(1,100000000):
random.seed(i)
# Get first random number
first = random.getrandbits(32)
print("In {}".format(i))
# Test for first 100 numbers
for j in range(100):
if (j != 0): random.getrandbits(32)
current = random.getrandbits(32)
# Found seed in which it occurs
if (current == first):
print(i,j)
sys.exit(0)
random.getrandbits(32)
print("Done {}".format(i))