如何将char"abcdefghijklmnopqrstuvwxyz"洗牌而不重复

new*_*mer 0 c++ random shuffle

const char chars[] = "abcdef ...."; 
char result[...];
memcpy(result, chars, sizeof(chars)); 
for (unsigned i = 0; i < (sizeof(chars)-1); ++i) {
    unsigned j = rand() % sizeof(chars);
    char tmp = result[j];
    result[j] = result[i];
    result[i] = tmp;
} 
Run Code Online (Sandbox Code Playgroud)

将结果写入文本文件的问题.

jua*_*nza 7

在C++中"如何改变"某些东西的答案是使用标准库的一种改组算法.一个简单的方法是将它放在std :: string中,并使用std :: random_shuffle:

std::string s = "abcdef ...." ;
std::random_shuffle(s.begin(), s.end());
Run Code Online (Sandbox Code Playgroud)

您也可以使用数组执行此操作:

char letters[] = {'a', 'b', ..... };
std::random_shuffle(letters, letters+26);
Run Code Online (Sandbox Code Playgroud)