deshuffle一个int / char数组

时间:2017-06-08 14:23:30

标签: c++ arrays shuffle

为了改变字符串st的字符,我使用std::shuffle和随机数生成器,它由已知种子提供。这是编码器的一部分,为简单起见,只需改变输入。

混洗数据将被发送到解码器。在那一方,我们无法访问原始输入,但是已经改组了。

如何使用相同的随机数生成器和相同的种子去混乱字符串shuffledSt,直到我可以获得原始字符串st

#include <random>
#include <algorithm>
int main (int argc, char* argv[])
{
    std::string st = "asdfgh";
    int seed = 1000;

    std::shuffle(st.begin(), st.end(), std::default_random_engine(seed));
    std::cerr << st << '\n';

    std::string shuffledSt = st;

    return 0;
}

1 个答案:

答案 0 :(得分:3)

我建议遵循算法

  • 使用indicesstd::iota元素生成向量st.size()
  • 使用相同的种子将相同的引擎移动。
  • 在循环向量上循环时,生成一个新字符串result,其中result[indices[i]] = st[i]