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)
您正在寻找的操作称为shuffle或置换.调用随机字母函数26次是不够的,因为如您所见,您可以生成重复项.
相反,从字符串开始"ABCDEFGHIJKLMNOPQRSTUVWXYZ"并执行shuffle操作.如果您想从头开始学习这些东西,我建议您阅读Fisher-Yates Shuffle,然后自己制作一个实现.