多年来,我一直在考虑这一点,但从未设法实施。我说的是一个快速、高效的 C 函数,它在输入中接受整数数值(例如 16 位),并在输出中给出完全不同的相同位大小的数字,但“考虑”所有数字已经给出了,虽然不是通过使用真实记忆,而是通过数学魔法。对不起,英语不是我的母语,我的意思是该函数应该随机映射一对一但没有任何重复。
例如,我想象的可能应用程序是像素交叉淡入淡出图形例程之一,您可以将屏幕上的旧图片逐个像素地替换为新图片。坐标应随机选择,一旦像素被替换,不应再次寻址(无重复)。所有这些自然而然地通过一个基于数学的小型、快速和高效的函数(使用内存很容易实现,但这不是我想要的)。
显然,“位反转”解决方案行不通,因为它看起来不是随机的。甚至将第 3 位与第 11 位等交换,以创建更多“混乱”,反转一些位等。看起来并不好,所以我正在寻找一个纯数学的、看起来很随机的函数,可能至少有 16 位,并且使用尽可能少的内存(没有预先计算的表,因为我最终使用的第一个应用程序是在微控制器系统上使用公共域硬件和软件制作旧式游戏) .
你能帮忙吗?