【发布时间】:2021-05-09 08:44:05
【问题描述】:
假设给定一个 0 到 10000 范围内的输入整数。我想要一个一对一的函数,将该整数映射到同一范围内的另一个看似随机的整数。本质上,我想要这样的东西:
import random
random.seed(0)
out = list(range(10001))
random.shuffle(out)
mapper = {ii:oo for ii, oo in enumerate(out)}
>>> mapper[0]
6853
>>> mapper[1]
3631
>>> mapper[3]
421
唯一的问题是这个 Python 代码每帧执行数千次,所以我不想每次都打乱列表,因为这会减慢它的速度。但是我没有任何全局存储可以计算一次列表并访问每一帧(我在 Cinema 4D 中使用 Python 效果器,因此每个克隆都会执行整个 Python 脚本)。所以我需要另一个更快的解决方案来获得我正在寻找的东西。
我假设我可以使用一些更有效的数学函数来代替,它会得到非常相似的结果,本质上只是取一个整数并将其映射到给定范围内的另一个伪随机整数,同时产生相同的结果脚本运行的时间。有什么想法吗?
【问题讨论】: