String 伪随机串洗牌

String 伪随机串洗牌,string,math,encryption,combinations,shuffle,String,Math,Encryption,Combinations,Shuffle,我正在寻找一种方法,使用键(整数)以独特的方式将字母混合在字符串“abcdefghijklmnop”中。 例如: Key=45:“abcdefghijklmnop”->“pppmlkjihgfedcca” Key=46:“abcdefghijklmnop”->“ackifgednplhmjob” 第n个排列方法不合适,因为我需要字符串看起来与前一个/下一个不同(如在哈希函数中)。(a)您的字面意思是“唯一的方式”:范围内的每个键是否必须产生不同的结果,或者如果某些键碰巧以“随机”方式产生相同的结

我正在寻找一种方法,使用键(整数)以独特的方式将字母混合在字符串“abcdefghijklmnop”中。 例如: Key=45:“abcdefghijklmnop”->“pppmlkjihgfedcca” Key=46:“abcdefghijklmnop”->“ackifgednplhmjob”


第n个排列方法不合适,因为我需要字符串看起来与前一个/下一个不同(如在哈希函数中)。

(a)您的字面意思是“唯一的方式”:范围内的每个键是否必须产生不同的结果,或者如果某些键碰巧以“随机”方式产生相同的结果,是否可以?(b) 你的第一个例子重复字母,第二个没有,你提到排列,第一个不是。描述一组潜在的结果。一个结果有多少个字母?每个字母是否独立于输入字母选择,且允许重复?或者结果中的字母之间是否存在交互/相关性/限制,例如不允许重复?@EricPostphil a-是的,我需要每个键-字符串对都是唯一的。b-重复是可能的,没有任何限制,除了字符串应该总是16个字母长。更多示例:“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。谢谢你的回复!设n为输入中的字符数,m为输出中的字符数。从一个数字中选择n^m个潜在输出字符串中的一个,而不重复输出的方法实际上是从0到n^m的整数排列−1,包括在内。使其“随机”实际上意味着随机选择一种排列。有n^m!这样的排列。选择一个从0到n^m的随机数!−1计算起来可能有点麻烦。@EricPostbischi这是否意味着没有有效的方法来解决这个问题?我不是这么说的。一个理想的解决方案可能有点复杂,但由于时间不够,我目前没有更多地考虑它。其他人可能会评论。但另一种选择可能是一些混合排列的非随机函数;区间[0,n^m]中的一些简单的一对一映射−1] 就其本身而言,甚至可能是一个简单的线性同余函数。