为了改变字符串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;
}
答案 0 :(得分:3)
我建议遵循算法
indices
个std::iota
元素生成向量st.size()
。result
,其中result[indices[i]] = st[i]