我正在搜索输入0,1,2,3 ...... N的函数。其结果应该是相同的输入数组,只能“随机”置换。结果必须是唯一的,因此生成所有结果。现在,我知道/不介意对于0,1,...... N的所有列表,相同的结果将被输出。这是预期和罚款,我只是希望结果是改组的输入。
我发现了这个功能:
function perm( x )
{
return x * 833 % N;
}
其中833可以是任何大数字素数。 这会产生良好的结果,但它们总是具有重复的模式。参见N = 16: 0 3 6 9 12 15 2 五 8 11 14 1 4 7 10 13
想象一下它看起来像3个鲨鱼鳍。 基本上我的问题是,我如何制作一个能够完成我所描述的功能但却更混乱的功能呢?
答案 0 :(得分:4)
线性同余算法将始终显示线性模式。 你可能更想要一个块密码。请参阅例如here和此related question
你的长度很小,一个更实际的解决方案是预生成的排列表(如另一个答案所示 - 你更粗鲁地拒绝并被删除)。