我需要生成N位整数的(伪)随机序列,其中连续的整数与前一个整数的差别仅为1位,并且序列从不重复.我知道格雷码会产生只有1位差异的非重复序列,而LFSR会产生非重复的随机序列,但我不知道如何将这些想法结合起来产生我想要的东西.
实际上,N会非常大,比如说1000.我想随机抽样这个2 ^ 1000整数的大空间,但我需要生成类似随机游走的东西,因为应用程序只能从一个数字跳到另一个数字翻了一下.
使用任何随机数生成器算法生成1到N之间的整数(或0到N-1,具体取决于语言).使用结果确定要翻转的位的索引.
为了满足随机性,您需要存储以前生成的数字(感谢ShreevatsaR).此外,您可能遇到无法获得非重复答案的场景,因此这也需要回溯算法.