在C中生成随机字母

mis*_*yde 2 c random encryption

这是我的代码.我正在尝试生成随机字母,但我看到相同的字母.例如:(Y HTGDHFBSHXCHF Y FUXZWDYKLXI)我该如何解决?只是我需要混合字母而不是相同的字母.非常感谢.

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void random_string(char * string, unsigned length)
{
    /* Seed number for rand() */
    srand((unsigned int) time(0));


    int i;
    for (i = 0; i < length; ++i)
    {
        string[i] = rand() % 26 + 'A';
    }

    string[i] = '\0';
}

int main(void)
{
    char s[26];
    random_string(s, 26);
    printf("%s\n", s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ray*_*oal 7

您正在寻找的操作称为shuffle置换.调用随机字母函数26次是不够的,因为如您所见,您可以生成重复项.

相反,从字符串开始"ABCDEFGHIJKLMNOPQRSTUVWXYZ"并执行shuffle操作.如果您想从头开始学习这些东西,我建议您阅读Fisher-Yates Shuffle,然后自己制作一个实现.