基本上,我希望设计一个算法,它接受一个给定的数字,并返回一个与第一个数字无关的随机数。限制条件是a)相似的输入数字将始终产生相同的输出数字,b)在某个范围内(例如1-100),所有输出数字都是不同的,即,在100以下的两个不同的输入数字不会产生相同的输出数字。
我知道通过创建一个有序的数字列表,随机洗牌,然后返回输入的索引很容易实现。但我想知道是否可以完全没有缓存地完成。也许使用某种哈希算法?主要原因是如果可能输出的范围更大,比如说10000000000,那么如果你只能得到几个结果,生成整个数字范围然后随机洗牌就会变得荒谬。
无论用什么语言,我只想知道是否可能。我已经思考这个问题很长时间了,除了我已经想出的解决方案,我想不出其他的解决方法。
编辑:我刚刚想到另一个想法;有另一个算法返回第一个算法的反转结果将是一个有趣的探索挑战,无论它是否可能。
我知道通过创建一个有序的数字列表,随机洗牌,然后返回输入的索引很容易实现。但我想知道是否可以完全没有缓存地完成。也许使用某种哈希算法?主要原因是如果可能输出的范围更大,比如说10000000000,那么如果你只能得到几个结果,生成整个数字范围然后随机洗牌就会变得荒谬。
无论用什么语言,我只想知道是否可能。我已经思考这个问题很长时间了,除了我已经想出的解决方案,我想不出其他的解决方法。
编辑:我刚刚想到另一个想法;有另一个算法返回第一个算法的反转结果将是一个有趣的探索挑战,无论它是否可能。