3 回答

TA贡献1813条经验 获得超2个赞
如果我理解你的问题,你每次都想要相同的n-th数字。您可以创建一个类来跟踪生成的数字(如果您使用相同的seed)。
主要思想是,当您要求 nth-number 时,它将生成所有以前的数字,以便在程序的所有运行中始终相同。
import random
class myRandom():
def __init__(self):
self.generated = []
#your instance of random.Random()
self.rand = random.Random(99)
def generate(self, nth):
if nth < len(self.generated) + 1:
return self.generated[nth - 1]
else:
for _ in range(len(self.generated), nth):
self.generated.append(self.rand.randint(1,100))
return self.generated[nth - 1]
r = myRandom()
print(r.generate(1))
print(r.generate(5))
print(r.generate(10))

TA贡献1876条经验 获得超7个赞
使用 a defaultdict,您可以拥有一个在第一次访问每个键时生成一个新数字的结构。
from collections import defaultdict
from random import randint
random_numbers = defaultdict(lambda: randint(0, 100))
random_number[5] # 42
random_number[5] # 42
random_number[0] # 63
因此,在访问时会延迟生成数字。
由于您正在开发一款游戏,因此您很可能需要random_numbers通过程序中断来进行保存。您可以使用pickle来保存您的数据。
import pickle
random_numbers[0] # 24
# Save the current state
with open('random', 'wb') as f:
pickle.dump(dict(random_numbers), f)
# Load the last saved state
with open('random', 'rb') as f:
opened_random_numbers = defaultdict(lambda: randint(0, 100), pickle.load(f))
opened_random_numbers[0] # 24
添加回答
举报