我一直在尝试使用:
p = 4241 #Any large prime
x = 10 #Any Number smaller than p
for i in range (x):
print(p* (i) % 100)
生成看似随机的数字列表。虽然我希望列表更加随机,但这仍然足以满足我的目的。对于我的实际问题,我正在尝试创建一个有 2 个输入的函数
generate_i_in_sequence(i, seed)
我将是前一个数组的索引,种子将是随机化结果的东西。重要的是,具有相同种子的两个 i 不会生成相同的输出。这很简单,另一部分是我可能的范围需要是 range(1,100+i) 例如。一个看似随机的数字,该数字的范围可能随着我的成长而增长。我也希望这个过程是可逆的。基本上是一个密码。
我期望能够通过使用模表达式的一些巧妙的“步骤”解决方案来解决问题。 i = no_of_steps,并且需要线性增加范围,因此:
PRIME* (i) % (x+(i))
但是,由于范围增加也会对序列产生不利影响,因此它不再生成具有唯一对应值的 i,所以我根本不确定这是否是解决问题的方法。
使用 Numpy 库创建您的数字,如下所示:
import numpy as np
def generate_i_in_sequence(i,seed):
rng = np.random.default_rng(seed=seed+i)
num = rng.integers(1, 100+i ,endpoint=True)
return num
种子是一组seed+i,因此每个数字都是唯一的,确保函数生成的每个数字都是不同且可逆的,即使用户只需要记住一个种子。
此函数将返回一个看似随机生成的数字,然后您可以将其附加到列表末尾以创建解密列表
如果您需要更多信息,请随时询问,或在此处查看 Numpy 文档:https://numpy.org/doc/stable/reference/random/ generated/numpy.random.Generator.integers.html